Warum AU?
Dann hast du doch keinen Zugriff mehr auf den ":New Record".
Im Endeffekt wäre es bei der von dir gewählten Lösung nix weiter als das:
SQL-Code:
CREATE Table Robert_G.SENT_QUERIES_Audit
(PK_SENT_QUERIES_Aud Integer -- Zusätzliche PK_Spalte
,PROJECT_NO NUMBER(22)
,SUBJECT_ID NUMBER(22)
,SUBJID VARCHAR2(80)
,ERROR_ID NUMBER(22)
,SENT_TO_MONITOR VARCHAR2(60)
,SENT_DATE VARCHAR2(200)
,BACK VARCHAR2(500)
,BACK_DATE VARCHAR2(20))
SQL-Code:
-- Prim Key auf diese Spalte
ALTER Table Robert_G.SENT_QUERIES_audit
ADD Primary Key(PK_SENT_QUERIES_Aud)
Using Index
SQL-Code:
-- Sequence für den Audit PK
CREATE Sequence Robert_G.SENT_QUERIES_Aud_Seq
SQL-Code:
-- Sequence für den Audit PK
CREATE Trigger Robert_G.SENT_QUERIES_Aud_PK_Trig
Before INSERT ON Robert_G.SENT_QUERIES_Audit
FOR EACH ROW
DECLARE
NewID Integer;
BEGIN
SELECT Robert_G.SENT_QUERIES_Aud_Seq.NextVal
INTO NewID
FROM Dual;
:New.PK_SENT_QUERIES_Aud := NewID;
END;
SQL-Code:
CREATE Trigger Robert_G.SENT_QUERIES_Aud_Trig
Before INSERT Or Update ON Robert_G.SENT_QUERIES
FOR EACH ROW
BEGIN
-- Die 2 Zeilen klappen nur mit einem BU Trigger
:New.EditDate := SysDate;
:New.EditUser := User;
If UPDATING Then
INSERT INTO Robert_G.SENT_QUERIES_Audit
VALUES
( null
,:Old.PROJECT_NO
,:Old.SUBJECT_ID
,:Old.SUBJID
,:Old.ERROR_ID
,:Old.SENT_TO_MONITOR
,:Old.SENT_DATE
,:Old.BACK
,:Old.BACK_DATE);
End If;
END;
Falls du den Code zu
IB übersetzen konntest, dürfte er dir das für alle Tabellen des angegeben Users machen. (Audit tabelle & Co erzeugen)
Das da oben wurde aus einer Tabellenleiche von vorgestern, die noch in meinem User lag, erzeugt.