2015-11-19 149 views
1

我有一个令人困惑的问题。 我正在使用5.6.12社区版本。MySQL:INSERT INTO ... ON DUPLICATE KEY UPDATE不会触发AFTER UPDATE触发器

我有一个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触发器不是“触发”。

当然,这是一个沉重简化的情况,并没有任何与我当前的代码。我还没有找到关于这方面的很多信息。在我看来,一个DUPLICTE KEY的UPDATE是一个普通的UPDATE,应该调用我的触发器。

有没有人提出了类似意见,或能向我解释,为什么MySQL是表现这种方式,或向我保证,我必须在我的设置有一定的错误,因为它应该工作?

我不需要回答暗示,我不应该使用INSERT INTO ... ON DUPLICTE KEY ......,因为 一)那不是问题 和 B)我不能很容易地修改业务应用我目前正在努力。

非常感谢你的帮助

+0

它会建议(Mihai)更新部分在IODKU上失败。因此,不要责怪更新触发器,而应关注IODKU故障或潜在故障。这意味着你的更新从来没有发生过,而是不需要插入 – Drew

+0

所以,你正专注于错误的东西首先,你还没有表明IODKU甚至工程(基于一个独特的密钥冲突) – Drew

+0

对不起,我已经忘记了那部分。更新发生。这不是问题。但你会同意,它应该引发? – TurmDrummer

回答

1

我已经测试过这对smalles可能的规模,得出了结论。

  1. 更新触发器的工作原理就像您所期望的那样。它被ON DUPLICATE UPDATE调用。我可以通过从控制台调用查询来重现这一点。

  2. 更新触发不叫(我报道),当我从我的.NET代码执行查询,使用Oracle .NET连接器!我已经安装了当前版本6.9.8.0。到目前为止,我不知道,如果这是当前版本中的错误,或者这是一个常见问题。我会进一步调查,但对于这种情况,我的问题得到了回答。

该问题是为clerification不是MySQL问题,但连接器问题。

谢谢你的帮助,人。

相关问题