数据库触发器是一个与表相关联的,存储的PL/SQL 语句。每当一个特定的数据操做语句(insert update delete)在指定的表上发出时,Oracle自动执行触发器中定义的语句序列。数据库
触发器的应用场景以下:安全
CREATE [OR REPLACE] TRIGGER trigger_name {BEFORE | AFTER } {INSERT | DELETE | UPDATE [OF column [, column …]]} [OR {INSERT | DELETE | UPDATE [OF column [, column …]]}...] ON [schema.]table_name | [schema.]view_name [REFERENCING {OLD [AS] old | NEW [AS] new| PARENT as parent}] [FOR EACH ROW ] [WHEN condition] PL/SQL_BLOCK | CALL procedure_name;
其中:app
/* 实施复杂的安全性检查 禁止在非工做时间插入新员工 周末:to_char(sysdate,'day') in ('星期六','星期日') 上班前和下班后:to_number(to_char(sysdate,'hh24')) not between 9 and 18 */ create or replace trigger securityemp before insert on emp begin if to_char(sysdate,'day') in ('星期六','星期日') or to_number(to_char(sysdate,'hh24')) not between 9 and 18 then --禁止insert操做 抛出异常 raise_application_error(-20001,'禁止在非工做时间插入新员工'); end if; end; /