數(shù)據(jù)庫(kù)觸發(fā)器是與數(shù)據(jù)庫(kù)中某個(gè)數(shù)據(jù)表、視圖或事件相關(guān)聯(lián)的存儲(chǔ)子程序。舉一個(gè)例子,我們可以讓Oracle數(shù)據(jù)庫(kù)在INSERT、UPDATE或DELETE表達(dá)式影響一個(gè)表之前或之后來(lái)自動(dòng)激活一個(gè)觸發(fā)器。觸發(fā)器的用途之一就是審核數(shù)據(jù)修改。例如,下面的表級(jí)(table-level)觸發(fā)器會(huì)在emp表的salaries字段更新后被激活。
CREATE TRIGGER audit_sal
AFTER UPDATE OF sal
ON emp
FOR EACH ROW
BEGIN
INSERT INTO emp_audit
VALUES ...
END;
************實(shí)例。。。!******************
1。先創(chuàng)建emp_audit表:
create table emp_audit(information varchar2(50), update_today date);
2。如果沒(méi)有emp表,請(qǐng)創(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;