Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.misc -> Referencing :NEW AND :OLD values of a particular column in a trigger
Howdy,
Is there a way to reference new and old values of a particular column without hard codeing the name of the particular column? Here is some sample code that of course does not work.
CREATE OR REPLACE TRIGGER PLAY_TRIG
BEFORE UPDATE ON PLAY
FOR EACH ROW
DECLARE
CURSOR Fields IS
SELECT COLUMN_NAME FROM USER_TAB_COLUMNS WHERE Table_NAME = 'PLAY'; C1 Integer; C1_CNT NUMBER; SQLSTRING VARCHAR2(200); BEGIN DBMS_OUTPUT.ENABLE(10000); FOR FIELD_REC IN FIELDS LOOP IF UPDATING (Field_Rec.COLUMN_NAME) THEN SQLSTRING := 'INSERT INTO AUDIT_PLAY (AUDIT_TIME, PLAY) VALUES ('||SYSDATE||', '||:NEW.||'*REPLACE*)'; -- Also tried -- SQLSTRING := 'INSERT INTOAUDIT_PLAY (AUDIT_TIME, PLAY) VALUES ('||SYSDATE||', :NEW.*REPLACE*)';
SQLSTRING := REPLACE(SQLSTRING,'*REPLACE*',Field_Rec.COLUMN_NAME); DBMS_OUTPUT.PUT_LINE(SQLSTRING); --DBMS_SQL.Parse(C1, SQLSTRING, DBMS_SQL.NATIVE); --C1_CNT := DBMS_SQL.Execute(C1); END IF; END LOOP; -- End CURSOR LOOP FIELDSEND; -- End Play trig
Show Errors Trigger PLAY_Trig
Thanks,
Ken
Received on Sun Jun 13 1999 - 09:14:28 CDT