我写了一个像
这样的触发器CREATE TRIGGER myTrigger
INSTEAD OF INSERT ON myTable
EXECUTE PROCEDURE myFunction();
但我了解到INSTEAD OF
触发器无法应用于表格。
唯一的方法应该是使用
BEFORE OF INSERT
触发器应该在另一个表上检索一些值(当用户调用insert函数时未知)并将此值插入触发查询并执行它。我怎么能这样做?
答案 0 :(得分:1)
你会写一个PL / PgSQL触发器:
检查tg_op
以确定该操作是INSERT
,UPDATE
还是DELETE
;以及
根据操作类型,使用NEW
和/或OLD
伪变量构建并运行INSERT
s,UPDATE
s或{ {1}}在真实的目标表上;然后
返回DELETE
,以便不对原始目标表执行任何操作。
请参阅the basic documentation on PL/PgSQL triggers。
除非您正在使用表继承,否则这是一件非常奇怪的事情。