oracle 触发器 简单表实例
CREATE TABLE DWUSER.T1 ( OLD_VALUE NUMBER(7,2),
NEW_VALUE NUMBER(7,2),
UP_DATE DATE );
CREATE TABLE DWUSER.EMP ( EMPNO NUMBER(4),
ENAME VARCHAR2(10 BYTE),
JOB VARCHAR2(9 BYTE),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2) );
--数据自己插入;
CREATE OR REPLACE TRIGGER DWUSER.TRG1
AFTER INSERT OR UPDATE or delete
OF sal ON DWUSER.EMP
FOR EACH ROW
BEGIN
if inserting then
INSERT INTO T1 VALUES(1,:NEW.SAL,sysdate); --1代表插入的数据
else if updating then INSERT INTO T1 VALUES(:OLD.SAL,:NEW.SAL,sysdate);--更新的记录
else INSERT INTO T1 VALUES(:OLD.SAL,2,sysdate); --2代表删除的数据
end if;
end if;
END;
结果:
1601 1602 2011/12/23 16:40:40
1251 1252 2011/12/23 16:40:40
2976 2977 2011/12/23 16:40:40
1301 1302 2011/12/23 16:40:40
1 788 2011/12/23 16:43:48
1602 2 2011/12/23 16:45:26
NEW_VALUE NUMBER(7,2),
UP_DATE DATE );
CREATE TABLE DWUSER.EMP ( EMPNO NUMBER(4),
ENAME VARCHAR2(10 BYTE),
JOB VARCHAR2(9 BYTE),
MGR NUMBER(4),
HIREDATE DATE,
SAL NUMBER(7,2),
COMM NUMBER(7,2),
DEPTNO NUMBER(2) );
--数据自己插入;
CREATE OR REPLACE TRIGGER DWUSER.TRG1
AFTER INSERT OR UPDATE or delete
OF sal ON DWUSER.EMP
FOR EACH ROW
BEGIN
if inserting then
INSERT INTO T1 VALUES(1,:NEW.SAL,sysdate); --1代表插入的数据
else if updating then INSERT INTO T1 VALUES(:OLD.SAL,:NEW.SAL,sysdate);--更新的记录
else INSERT INTO T1 VALUES(:OLD.SAL,2,sysdate); --2代表删除的数据
end if;
end if;
END;
结果:
1601 1602 2011/12/23 16:40:40
1251 1252 2011/12/23 16:40:40
2976 2977 2011/12/23 16:40:40
1301 1302 2011/12/23 16:40:40
1 788 2011/12/23 16:43:48
1602 2 2011/12/23 16:45:26