我有一个在插入或更新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。我在这里要问的是:如果另一个触发器函数修改了它的字段,是否应该触发一个触发器函数?
答案 0 :(得分:0)
你是对的,在这种情况下不会调用trigger_function_b
。
当列的任何列在
UPDATE OF column_name
命令的UPDATE
列表中列为目标时,将触发特定于列的触发器(使用SET
语法定义的触发器)。即使未触发触发器,列的值也可能会更改,因为不会考虑BEFORE UPDATE
触发器对行内容所做的更改。相反,UPDATE ... SET x = x ...
之类的命令会触发列x
上的触发器,即使列的值没有变化。
此处的关键点是,当且仅当列出现在SET
列表中时,触发器才会触发。