触发顺序:
行级触发器和语句级触发器区别:
主要在于影响次数不同:
如果该语句只影响一行,则语句级与行级触发效果相同。
如果该语句影响多行,则行级触发的次数比语句级触发的次数多。
具体应根据进行一个操作时触发器的触发次数,来决定是创建一个语句级还是行级触发器。
BEFORE
型语句级触发器:
CREATE OR REPLACE TRIGGER secure_emp
BEFORE INSERT ON emp
BEGIN
IF (TO_CHAR(SYSDATE,’DY’) in (‘SAT’,’SUN’))
OR (to_number(TO_CHAR(sysdate,’HH24’)) NOT BETWEEN 8 AND 18) THEN
RAISE_APPLICATION_ERROR(-20500,’you may only insert into EMP during
normal hours.’);
END IF;
END;
1
2
3
4
5
6
7
AFTER
型语句级触发器
Create or replace TRIGGER check_sal_count
AFTER UPDATE OF sal ON emp
Declare
V_sal_changes NUMBER;
V_max_changes NUMBER;
Begin
SELECT upd,max_upd INTO v_sal_changes,v_max_changes FROM audit_able
WHERE user_name=user AND table_name=‘EMP’ AND column_name=‘SAL’;
IF v_sal_changges>v_max_changes THEN
RAISE_APPLICATION_ERROR(-20501,’you may only make a maximum of’||
TO_CHAR(v_max_chages)||’to the sal column’);
End if;
评论