/* 语句触发器与一些特定的语句相关,例如INSERT,UPDATE,DELETE语句等等,可以使用CREATE TRIGGER语句创建触发器,格式如下: CREATE[OR REPLACE] TRIGGER <触发器名> [BEFORE|AFTER] <触发事件> ON <表名> */ --在SqlPlus中创建两张用于测试的表 drop table testTrigger; drop table testlog; drop trigger TRI_TESTTRIGER; --创建表 create table testTrigger( id number(5), name number(3) ); --创建日志表 create table testlog( action varchar2(50), act_time date ); --创建一个触发器,当用户产生INSERTING,UPDATING,DELETING数据的时候,都会产生相应的日志 CREATE OR REPLACE TRIGGER TRI_TESTTRIGER AFTER INSERT OR UPDATE OR DELETE ON TESTTRIGGER DECLARE V_ACTION VARCHAR2(10); BEGIN IF INSERTING THEN V_ACTION := 'INSERT'; ELSIF UPDATING THEN V_ACTION := 'UPDATE'; ELSIF DELETING THEN V_ACTION := 'DELETE'; ELSE V_ACTION :='OTHER'; END IF; INSERT INTO TESTLOG VALUES(V_ACTION,SYSDATE); END; / --在testTrigger表中执行insert、update、delete语句 SQL> insert into testTrigger values(1,1); 已创建 1 行。 SQL> update testtrigger set id=2; 已更新 1 行。 SQL> delete testtrigger where id=2; 已删除 1 行。 --查询testlog表中是否有记录 SQL> select * from testlog; ACTION ACT_TIME -------------------------------------------------- -------------- INSERT 17-4月 -11 UPDATE 17-4月 -11 DELETE 17-4月 -11 --当操作回退的时候,触发器所产生的TESTLOG也被回退掉了 SQL> rollback; 回退已完成。 SQL> select * from testlog; 未选定行