我有一个令人困惑的问题。 我使用的是 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 的更新在内部是一个正常的更新,应该调用我的触发器。
有没有人做过类似的观察,或者可以向我解释,为什么 MySQL 会这样,或者向我保证,我的设置中一定有一些错误,因为它应该可以工作?
我不需要建议的答案,我不应该使用 INSERT INTO ... ON DUPLICTE KEY ...,因为 a) 那不是问题 和 b) 我无法轻易修改我当前正在处理的业务应用程序。
非常感谢您的帮助
最佳答案
我已经在尽可能小的规模上对此进行了测试并得出了结论。
更新触发器工作正常,正如您所期望的那样。它由
ON DUPLICATE UPDATE
调用。我可以通过从控制台调用查询来重现这一点。当我使用 Oracle .net 连接器从我的 .net 代码执行查询时,没有调用更新触发器(正如我所报告的)!我已经安装了当前版本 6.9.8.0。到目前为止,我不知道这是当前版本中的错误,还是普遍存在的问题。我将进一步调查,但对于这种情况,我的问题得到了回答。
问题是为了澄清不是 MySQL 问题,而是连接器问题。
谢谢大家的帮助。
关于MySQL: INSERT INTO ... ON DUPLICATE KEY UPDATE 不触发 AFTER UPDATE 触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33800050/