MySQL:INSERT INTO ... ON DUPLICATE KEY UPDATE不会触发AFTER UPDATE触发器

时间:2015-11-19 09:37:53

标签: mysql triggers

我有一个令人困惑的问题。 我使用的是5.6.12社区版。

我有一个AFTER UPDATE触发器,当用例如

调用表时,它正常工作
UPDATE test_table SET TestVariable = 2 WHERE TestIndex = 2;

但是当我使用

INSERT INTO test_table (TestIndex,TestVariable) VALUES (2,3) ON DUPLICATE KEY UPDATE TestVariable = 3;

UPDATE-Trigger未被触发"。

这当然是一个大大简化的案例,与我当前的代码无关。我没有找到很多关于此的信息。在我看来,DUPLICTE KEY上的UPDATE是一个正常的UPDATE,应该调用我的触发器。

有没有人做过类似的观察,或者可以向我解释一下,为什么MySQL的表现如此,或者向我保证,我的设置中必须有一些错误,因为它应该有效?

我不需要答案暗示,我不应该使用INSERT INTO ...在DUPLICTE KEY ...,因为 a)这不是问题 和 b)我无法轻易修改我目前正在处理的业务应用程序。

非常感谢您的帮助

1 个答案:

答案 0 :(得分:1)

我已经在尽可能小的范围内对此进行了测试并得出结论。

  1. 更新触发器的工作方式与您期望的一样。它由ON DUPLICATE UPDATE调用。我可以通过从控制台调用查询来重现这一点。

  2. 当我使用Oracle .net连接器从我的.net代码执行查询时,不会调用Update触发器(正如我所报告的那样)!我已安装当前版本6.9.8.0。到目前为止,我不知道,如果这是当前版本中的错误,或者这是一个普遍的问题。我会进一步调查,但对于这种情况,我的问题得到了回答。

  3. 问题是出于问题而不是MySQL问题,而是连接器问题。

    感谢您的帮助,人们。