postgresql 如何在BEFORE事件上创建“CONSTRAINT TRIGGER”Postgres

rqcrx0a6  于 2023-04-29  发布在  PostgreSQL
关注(0)|答案(1)|浏览(139)

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事件吗?

t2a7ltrp

t2a7ltrp1#

CREATE TRIGGERS版本15(当前版本,您正在使用的版本)的文档还说:
约束触发器必须是普通表上的AFTER ROW触发器(而不是外来表)。
它还表示(大约BEFOREAFTERINSTEAD OF):
约束触发器只能指定为AFTER
因此,它不支持BEFORE触发器。

相关问题