postgresql触发器 - 而不是插入不工作

时间:2017-12-04 20:35:17

标签: postgresql

此代码有效:

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触发器。

但我在网上看到很多这样的例子。为什么它对我不起作用?

1 个答案:

答案 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规则可以用另一个命令替换给定命令,   或导致命令根本不执行。