Postgres版本:PostgreSQL 15.1, compiled by Visual C++ build 1914, 64-bit
我读了PostgreSQL documentation关于如何创建CONSTRAINT TRIGGER
。
这是我的查询:
CREATE CONSTRAINT TRIGGER my_table_trigger
BEFORE INSERT
ON my_table
DEFERRABLE INITIALLY IMMEDIATE
FOR EACH ROW
EXECUTE FUNCTION my_table_trigger_function();
当我运行上面的查询时,它产生错误说:
SQL错误[42601]:错误:在“BEFORE”处或附近出现语法错误
在寻找解决方案后,我发现了this旧文档。在那个文档上,它说CONSTRAINT TRIGGER
只支持AFTER
事件。然后我修改了我的查询,将BEFORE
关键字改为AFTER
,查询成功运行。
我的问题是CONSTRAINT TRIGGER
只支持AFTER
事件,不支持BEFORE
事件吗?
1条答案
按热度按时间t2a7ltrp1#
CREATE TRIGGERS
版本15(当前版本,您正在使用的版本)的文档还说:约束触发器必须是普通表上的
AFTER ROW
触发器(而不是外来表)。它还表示(大约
BEFORE
,AFTER
,INSTEAD OF
):约束触发器只能指定为
AFTER
。因此,它不支持
BEFORE
触发器。