以下是 CREATE TRIGGER 语句的基本语法:
CREATE [ CONSTRAINT ] TRIGGER trigger_name
{ BEFORE | AFTER | INSTEAD OF } { event [ OR ... ] }
ON table_name
[ FROM referenced_table_name ]
[ NOT DEFERRABLE | [ DEFERRABLE ] [ INITIALLY IMMEDIATE | INITIALLY DEFERRED ] ]
[ FOR [ EACH ] { ROW | STATEMENT } ]
[ WHEN ( condition ) ]
EXECUTE FUNCTION function_name ( arguments );
其中:
- trigger_name 是要创建的触发器的名称。
- BEFORE, AFTER, 或 INSTEAD OF 指定触发器何时执行。
- event 可以是 INSERT, UPDATE, 或 DELETE,表示触发器与哪种事件相关。
- table_name 是触发器所在的表的名称。
- referenced_table_name 是可选的,指定引用表,用于定义引用约束触发器。
- NOT DEFERRABLE 或 DEFERRABLE [ INITIALLY IMMEDIATE | INITIALLY DEFERRED ] 是可选的,用于定义触发器是否支持延迟触发。
- FOR EACH ROW 或 FOR EACH STATEMENT 指定触发器是按行还是按语句触发。
- WHEN ( condition ) 是可选的,用于指定触发器执行的条件。
- EXECUTE FUNCTION function_name ( arguments ) 指定触发器执行的函数及其参数。
以下是一个简单的例子,创建一个在插入数据之前触发的触发器:
CREATE TRIGGER before_insert_trigger
BEFORE INSERT
ON my_table
FOR EACH ROW
EXECUTE FUNCTION my_trigger_function();
这个例子中,before_insert_trigger 是触发器的名称,BEFORE INSERT 表示触发器在插入操作之前执行,my_table 是触发器所在的表,FOR EACH ROW 表示触发器按行触发,my_trigger_function() 是触发器执行的函数。
请注意,触发器的创建取决于具体的业务需求,确保触发器的逻辑与数据库的要求一致。
转载请注明出处:http://www.zyzy.cn/article/detail/8687/PostgreSQL