模拟表上INSTEAD OF INSERT触发器的行为

时间:2013-08-11 09:36:33

标签: sql database postgresql triggers

我写了一个像

这样的触发器
CREATE TRIGGER myTrigger
INSTEAD OF INSERT ON myTable
EXECUTE PROCEDURE myFunction(); 

但我了解到INSTEAD OF触发器无法应用于表格。

唯一的方法应该是使用

BEFORE OF INSERT

触发器应该在另一个表上检索一些值(当用户调用insert函数时未知)并将此值插入触发查询并执行它。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

你会写一个PL / PgSQL触发器:

  • 检查tg_op以确定该操作是INSERTUPDATE还是DELETE;以及

  • 根据操作类型,使用NEW和/或OLD伪变量构建并运行INSERT s,UPDATE s或{ {1}}在真实的目标表上;然后

  • 返回DELETE,以便不对原始目标表执行任何操作。

请参阅the basic documentation on PL/PgSQL triggers

除非您正在使用表继承,否则这是一件非常奇怪的事情。