CREATE TABLE "PVTEST" ( "PVNAME" VARCHAR2(20 BYTE) ) ; CREATE TABLE "PVLOG" ( "PVSUMMARY" VARCHAR2(20 BYTE) ) ; CREATE OR REPLACE TRIGGER PVTEST_TRIGGER BEFORE DELETE OR INSERT OR UPDATE ON PVTEST FOR EACH ROW BEGIN insert into PVLOG (PVSUMMARY) values ('pippo'); END;
With this trigger, and modification will generate an extra entry in the PVLOG table.
Now I want to distinguish the operation being done:
CREATE OR REPLACE TRIGGER PVTEST_TRIGGER BEFORE DELETE OR INSERT OR UPDATE ON PVTEST FOR EACH ROW BEGIN IF DELETING then insert into PVLOG (PVSUMMARY) values ('DELETING'); END IF; IF INSERTING then insert into PVLOG (PVSUMMARY) values ('INSERTING'); END IF; IF UPDATING then insert into PVLOG (PVSUMMARY) values ('UPDATING '); END IF; END; /in the case of an UPDATE, you have the 2 variables :OLD and :NEW pointing to the old and new record.
The real pity is that there doesn't seem to be a way to declare a trigger for ANY table in the schema, and retrieving the table being affected with a :TABLE variable. You can define SCHEMA TRIGGERS, but they cannot be defined to catch INSERT DELETE UPDATE events.
No comments:
Post a Comment