此代码有效:
CREATE TRIGGER HandleRegistration
BEFORE INSERT ON Registered
FOR EACH ROW
EXECUTE PROCEDURE registration_handler();
但这个不是
CREATE TRIGGER HandleRegistration
INSTEAD OF INSERT ON Registered
FOR EACH ROW
EXECUTE PROCEDURE registration_handler();
我收到错误:
"注册"是一张桌子" - detail:表不能有INSTEAD OF触发器。
但我在网上看到很多这样的例子。为什么它对我不起作用?
答案 0 :(得分:0)
https://www.postgresql.org/docs/current/static/sql-createtrigger.html
指定触发INSTEAD OF触发事件的触发器必须 被标记为每个行,并且只能在视图上定义。
你可能正在寻找的是RULE
,而不是TRIGGER
?
https://www.postgresql.org/docs/current/static/sql-createrule.html
或者,INSTEAD规则可以用另一个命令替换给定命令, 或导致命令根本不执行。