触发器 创建触发器: CREATE [OR REPLACE] TRIGGER <触发器名> BEFORE|AFTER INSERT|DELETE|UPDATE [OF <列名>] ON <表名> [FOR EACH ROW] WHEN (<条件>) <pl/sql块> 关键字"BEFORE"在操作完成前触发;"AFTER"则是在操作完成后触发; 关键字"FOR EACH ROW"指定触发器每行触发一次. 关键字"OF <列名>" 不写表示对整个表的所有列. WHEN (<条件>)表达式的值必须为"TRUE". 特殊变量: :new --为一个引用最新的列值; :old --为一个引用以前的列值; 这些变量只有在使用了关键字 "FOR EACH ROW"时才存在.且update语句两个都有,而insert只有:new ,delect 只有:old; 使用RAISE_APPLICATION_ERROR 语法:RAISE_APPLICATION_ERROR(错误号(-20000到-20999),消息[,{true|false}]); 抛出用户自定义错误. 如果参数为'TRUE',则错误放在先前的堆栈上. INSTEAD OF 触发器 INSTEAD OF 触发器主要针对视图(VIEW)将触发的dml语句替换成为触发器中的执行语句,而不执行dml语句. 禁用某个触发器 ALTER TRIGGER <触发器名> DISABLE 重新启用触发器 ALTER TRIGGER <触发器名> ENABLE 禁用所有触发器 ALTER TRIGGER <触发器名> DISABLE ALL TRIGGERS 启用所有触发器 ALTER TRIGGER <触发器名> ENABLE ALL TRIGGERS 删除触发器 DROP TRIGGER <触发器名> |