触发器功能是否应该触发另一个触发器?

时间:2016-10-21 12:50:45

标签: postgresql

我有一个在插入或更新field_1或field_2之前触发的trigger_function_a。我有另一个在插入或更新field_3或field_4之前触发的trigger_function_b:

在插入或更新field_1或field_2 =>之前

trigger_function_a

在插入或更新field_3或field_4 =>之前

trigger_function_b

现在,trigger_function_a修改了field_3。是触发trigger_function_b吗?我试过了,但没有触发。为什么?我搜索了所有可用的文档,但我没有找到答案。

请不要在意这里的语法。如果我自己修改字段,触发器功能可以自行工作,例如: G。通过SQL。我在这里要问的是:如果另一个触发器函数修改了它的字段,是否应该触发一个触发器函数?

1 个答案:

答案 0 :(得分:0)

你是对的,在这种情况下不会调用trigger_function_b

查看the documentation

  

当列的任何列在UPDATE OF column_name命令的UPDATE列表中列为目标时,将触发特定于列的触发器(使用SET语法定义的触发器)。即使未触发触发器,列的值也可能会更改,因为不会考虑BEFORE UPDATE触发器对行内容所做的更改。相反,UPDATE ... SET x = x ...之类的命令会触发列x上的触发器,即使列的值没有变化。

此处的关键点是,当且仅当列出现在SET列表中时,触发器才会触发。