數(shù)據(jù)庫觸發(fā)器是與數(shù)據(jù)庫中某個數(shù)據(jù)表、視圖或事件相關(guān)聯(lián)的存儲子程序。舉一個例子,我們可以讓Oracle數(shù)據(jù)庫在INSERT、UPDATE或DELETE表達(dá)式影響一個表之前或之后來自動激活一個觸發(fā)器。觸發(fā)器的用途之一就是審核數(shù)據(jù)修改。例如,下面的表級(table-level)觸發(fā)器會在emp表的salaries字段更新后被激活。
CREATE TRIGGER audit_sal
AFTER UPDATE OF sal
ON emp
FOR EACH ROW
BEGIN
INSERT INTO emp_audit
VALUES ...
END;
************實例。。。!******************
1。先創(chuàng)建emp_audit表:
create table emp_audit(information varchar2(50), update_today date);
2。如果沒有emp表,請創(chuàng)建emp表:
create table emp(
EMPNO NUMBER(4) primary key,
ENAME VARCHAR2(10)
JOB VARCHAR2(9)
MGR NUMBER(4)
HIREDATE DATE
SAL NUMBER(7,2)
COMM NUMBER(7,2)
DEPTNO NUMBER(2));
并插入數(shù)據(jù):
insert into emp values(7368, 'SMITH1', 'CLERK', 7902, sysdate, 13.00,null,20);
3。創(chuàng)建觸發(fā)器:
CREATE TRIGGER audit_sal
AFTER UPDATE OF sal
ON emp
FOR EACH ROW
BEGIN
INSERT INTO emp_audit
VALUES('successful',sysdate);
END;
******************************
1。執(zhí)行更新emp操作:update emp set sal=1300 where empno=7368;
2。查看emp更新后的數(shù)據(jù):select * from emp;
3。 查看emp_audit的數(shù)據(jù):select * from emp_audit;