Oracle触发器的写法有三种:行级触发器、语句级触发器和嵌套表触发器。
- 行级触发器(Row-Level Triggers):在每行受影响的情况下触发,对于每一行的操作都会触发一次,可以在触发器中引用
NEW
和OLD
伪记录。
CREATE OR REPLACE TRIGGER trigger_name BEFORE INSERT OR UPDATE OR DELETE ON table_name FOR EACH ROW BEGIN -- 触发器逻辑 END; /
- 语句级触发器(Statement-Level Triggers):在语句执行的情况下触发,对于一次语句中的所有行操作只触发一次,不能引用
NEW
和OLD
伪记录。
CREATE OR REPLACE TRIGGER trigger_name BEFORE INSERT OR UPDATE OR DELETE ON table_name BEGIN -- 触发器逻辑 END; /
- 嵌套表触发器(Nested Table Triggers):用于处理嵌套表的操作,可以在嵌套表的操作中触发,可以引用
NEW
和OLD
伪记录。
CREATE OR REPLACE TRIGGER trigger_name BEFORE INSERT OR UPDATE OR DELETE ON table_name FOR EACH ROW DECLARE TYPE nested_table_type IS TABLE OF table_name.column_name%TYPE; nested_table nested_table_type; BEGIN -- 触发器逻辑 END; /
以上是Oracle触发器的三种常见写法,根据实际需求选择合适的触发器类型进行编写。