PL/SQL之触发器谓词

时间:2022-01-21 23:39:43

ORACLE提供 INSERTING, UPDATING, DELETING判断发生的操作。

INSERTING:如果触发的语句为INSERT语句,则为TRUE,否则为FALSE;

UPDATING:如果触发的语句为UPDATE语句,则为TRUE,否则为FALSE;

DELETING:如果触发的语句为DELETE语句,则为TRUE,否则为FALSE;

基本使用:

CREATE OR REPLACE TRIGGER tri_test
BEFORE DELETE OR INSERT OR UPDATE ON mytest
FOR EACH ROW
WHEN (OLD.ID = 1)
BEGIN
DBMS_OUTPUT.PUT_LINE('触发器开始执行');
CASE WHEN INSERTING THEN
DBMS_OUTPUT.PUT_LINE('插入逻辑植入');
RAISE_APPLICATION_ERROR(-20001,'id为1的用户不能插入');
WHEN UPDATING THEN
DBMS_OUTPUT.PUT_LINE('更新逻辑植入');
RAISE_APPLICATION_ERROR(-20002,'id为1的用户不能更新');
WHEN DELETING THEN
DBMS_OUTPUT.PUT_LINE('删除逻辑植入');
RAISE_APPLICATION_ERROR(-20003,'id为1的用户不能删除');
END CASE;
END;
PL/SQL之触发器谓词