阅读量:3
创建触发器的语法如下:
CREATE [OR REPLACE] TRIGGER trigger_name {BEFORE | AFTER | INSTEAD OF} {INSERT | UPDATE | DELETE} [OF column_name] ON table_name [REFERENCING OLD AS old NEW AS new] [FOR EACH ROW] [WHEN (condition)] DECLARE declaration_section BEGIN executable_section EXCEPTION exception_section END;
其中:
- trigger_name:触发器的名称。
- BEFORE/AFTER/INSTEAD OF:触发器的执行时间。
- INSERT/UPDATE/DELETE:触发器的事件类型。
- OF column_name:触发器只对指定列的操作触发。
- table_name:触发器所属的表名。
- REFERENCING OLD AS old NEW AS new:用于在触发器中引用旧值和新值。
- FOR EACH ROW:表示触发器对每一行数据都执行。
- WHEN (condition):触发器执行的条件。
- declaration_section:声明变量和游标。
- executable_section:执行的SQL语句。
- exception_section:处理异常的代码。
创建了触发器后,可以使用INSERT、UPDATE、DELETE语句来触发触发器的执行。
例如,创建一个在每次插入数据后自动更新修改时间的触发器:
CREATE OR REPLACE TRIGGER update_modify_time AFTER INSERT ON table_name FOR EACH ROW BEGIN UPDATE table_name SET modify_time = SYSDATE WHERE id = :new.id; END;
使用INSERT语句插入数据后,触发器会自动执行更新操作,更新修改时间。