我有一个令人困惑的问题。 我使用的是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)我无法轻易修改我目前正在处理的业务应用程序。
非常感谢您的帮助
答案 0 :(得分:1)
我已经在尽可能小的范围内对此进行了测试并得出结论。
更新触发器的工作方式与您期望的一样。它由ON DUPLICATE UPDATE
调用。我可以通过从控制台调用查询来重现这一点。
当我使用Oracle .net连接器从我的.net代码执行查询时,不会调用Update触发器(正如我所报告的那样)!我已安装当前版本6.9.8.0。到目前为止,我不知道,如果这是当前版本中的错误,或者这是一个普遍的问题。我会进一步调查,但对于这种情况,我的问题得到了回答。
问题是出于问题而不是MySQL问题,而是连接器问题。
感谢您的帮助,人们。