CREATETABLE A(ID INT, DESCRIPTION VARCHAR(10));CREATETABLE B(ID INT, DESCRIPTION VARCHAR(10));CREATEORREPLACETRIGGER SYNC_A_TO_B
AFTERINSERTORUPDATEORDELETEON A
FOREACHROW --indicate that this is a rowtrigger, nottableleveltriggerBEGIN
DBMS_OUTPUT.PUT_LINE(:NEW.ID || '-' || :NEW.DESCRIPTION);
DBMS_OUTPUT.PUT_LINE(:OLD.ID || '-' || :OLD.DESCRIPTION);
CASE
WHEN INSERTING THEN
DBMS_OUTPUT.PUT_LINE('INSERTING');
INSERTINTO B VALUES (:NEW.ID, :NEW.DESCRIPTION);
WHEN UPDATING THEN
DBMS_OUTPUT.PUT_LINE('UPDATING');
UPDATE B SET B.DESCRIPTION = :NEW.DESCRIPTION WHERE B.ID = :NEW.ID;
WHEN DELETING THEN
DBMS_OUTPUT.PUT_LINE('DELETING');
DELETEFROM B WHERE B.ID = :OLD.ID;ENDCASE;END;
/
INSERTINTO A VALUES (1, 'A_TO_B');SELECT * FROM A;SELECT * FROM B;UPDATE A SET A.DESCRIPTION = 'UPDATED'WHERE A.ID = 1;SELECT * FROM A;SELECT * FROM B;DELETEFROM A WHERE A.ID = 1;SELECT * FROM A;SELECT * FROM B;DROPTABLE A;DROPTABLE B;