Oracle 中建立触发器的语法如下,图片引自Oracle网站:
其中DML Event Clause为:
其中referencing_clause为:
一般来说建立after的触发器效率比较高,为了提高效率,我们应该细化限制触发的条件,比如指定字段和值的范围才触发:
CREATE TRIGGER hr.salary_check
BEFORE INSERT OR UPDATE OF salary, job_id ON hr.employees
FOR EACH ROW
WHEN (new.job_id <> 'AD_VP')
pl/sql_block ......
触发器和引起触发的SQL是同一个事务,除非用PRAGMA AUTONOMOUS_TRANSACTION参数指定自治事务,但可能会出现数据结果不一致的问题。