我正在尝试编写触发器但收到语法错误:
CREATE TRIGGER archive_domain_trig
AFTER UPDATE OF is_rejected ON pending_domains
FOR EACH ROW
WHEN (new.is_rejected is True)
EXECUTE PROCEDURE archive_domain_fun();
错误:语法错误位于"OF"处或附近
不仅如此,它还会在"何时"条件下给出错误,例如
CREATE TRIGGER archive_domain_trig
AFTER UPDATE ON pending_domains
FOR EACH ROW
WHEN (new.is_rejected is True)
EXECUTE PROCEDURE archive_domain_fun();
给:
错误:在"WHEN"处或附近出现语法错误。
select version();
"EnterpriseDB 8.3.0.116 on x86_64-unknown-linux-gnu, compiled by GCC gcc (GCC) 4.1.0"
这几乎类似于 postgres 示例,谁能告诉我我在这里做错了什么?
我猜EnterpriseDB 8.3
是PostgreSQL 8.3的EnterpriseDB版本。条件触发器(即WHEN
选项)是PostgreSQL 9.0中的一个新功能。比较 8.3 和 9.0 的创建触发器文档。