2016-07-25 14 views
0

Für ein Projekt möchte ich eine "History" -Tabelle für meine Aufzeichnungen haben. Ich habe zwei Tabellen für dieses (Beispiel) System:Erstellen einer Datensatzverlaufstabelle - Wie erstelle ich einen Datensatz beim Erstellen?

RECORDS 
    ID 
    NAME 
    CREATE_DATE 

RECORDS_HISTORY 
    ID 
    RECORDS_ID 
    LOG_DATE 
    LOG_TYPE 
    MESSAGE 

Wenn ich einen Datensatz in RECORDS einzufügen, wie kann ich einen zugehörigen Eintrag in RECORDS_HISTORY automatisch erstellen, wo RECORDS_ID an die neu eingefügten ID in RECORDS gleich?

Moment habe ich eine Sequenz auf den ID in RECORDS automatisch erhöht werden, wenn eine neue Zeile eingefügt wird, aber ich bin nicht sicher, wie ein Datensatz in RECORDS_HISTORY vorab auszufüllen, die wie folgt für jeden neu erstellen (nicht aktualisiert) Datensatz suchen.

INSERT INTO RECORDS_HISTORY (RECORDS_ID, LOG_DATE, LOG_TYPE, MESSAGE) VALUES (<records.id>, sysdate(), 'CREATED', 'Record created') 

Wie kann ich diese im Zusammenhang _HISTORY bespielen Schöpfung schaffen?

+1

Sie möchten einen Trigger. –

+0

Wie @a_horse_with_no_name sagte, löst: http://stackoverflow.com/questions/13756110/trigger-that-inserts-row-into-log-table-on-insert-oder-delete-in-a-persons-table- c oder http://dba.stackexchange.com/questions/26953/trigger-to-automatisch-add-values-to-a-table-in-oracle – vercelli

Antwort

0

Sie haben die DB, mit der Sie arbeiten, nicht erwähnt. Ich nehme sein Oracle an. Die naheliegendste Antwort ist: Verwenden Sie einen "On Insert Trigger". Sie können sogar die ID (Sequenz) aus der insert-Anweisung in die Tabelle RECORDS zurückholen. Nachteile dieser Lösung: Trigger sind ein bisschen "versteckter" Code, können Prozesse bei massiven Einfügungen verlangsamen und verbrauchen beim Speichern von teilweise redundanten Daten wie doppelter Speicherplatz. Was passiert, wenn RECORDS aktualisiert oder gelöscht wurde? Kann das passieren und musst du dich darum kümmern? Die große Frage ist: Was ist dein Ziel? Es gibt bewährte Historisierungskonzepte um. Werfen Sie einen Blick darauf: https://en.wikipedia.org/wiki/Slowly_changing_dimension

Verwandte Themen