Hallo Leute,
Ich versuche in PL SQL einen Trigger zu schreiben, der bei jedem Update alle geänderten Felder in einer Logging-Tabelle speichert.
Das ganze sollte so sein, dass man nicht immer explizit jedes Feld angeben muss.
Dies wäre beim hinzufügen eines Feldes problematisch, da man an die ganzen Trigger denken muss....
So weit bin ich gekommen....
Mein Problem ist im Moment das row.COLUMN_NAME in dieser Variable steht das zu überprüfende Feld. Anscheinend wird das aber nicht richtig erkannt, da PL SQL keine Variablenersetzung vornimmt...
Auch müsste ich über ld und :new.row.COLUMN_NAME auf die alten und neuen Werte zugreifen können.
Kann mir jemand von euch nen kleinen Tipp geben?
Gruß und Danke!
Markus
Ich versuche in PL SQL einen Trigger zu schreiben, der bei jedem Update alle geänderten Felder in einer Logging-Tabelle speichert.
Das ganze sollte so sein, dass man nicht immer explizit jedes Feld angeben muss.
Dies wäre beim hinzufügen eines Feldes problematisch, da man an die ganzen Trigger denken muss....
So weit bin ich gekommen....
Code:
create or replace trigger "BENUTZER_T1" AFTER update on "BENUTZER" for each row begin for row in (select COLUMN_NAME from USER_TAB_COLUMNS WHERE TABLE_NAME = 'BENUTZER') loop if updating (row.COLUMN_NAME) then INSERT INTO logs (aktion, tabelle, feld, datum) VALUES ('UPDATE', 'BENUTZER', row.COLUMN_NAME, SYSDATE); end if; end loop; end;
Auch müsste ich über ld und :new.row.COLUMN_NAME auf die alten und neuen Werte zugreifen können.
Kann mir jemand von euch nen kleinen Tipp geben?
Gruß und Danke!
Markus
Comment