2015-11-19 2 views
1

У меня запутанная проблема. Я использую 5.6.12 Community Version.MySQL: INSERT INTO ... ON DUPLICATE KEY UPDATE не запускает ПОСЛЕ ОБНОВЛЕНИЯ Триггер

У меня есть ПОСЛЕ UPDATE Trigger, что работает правильно, когда таблица вызывается, например

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-триггер не «срабатывает ».

Это, конечно, сильно упрощенное дело и не имеет ничего общего с моим текущим кодом. Я не нашел много информации об этом. На мой взгляд, UPDATE на DUPLICTE KEY является внутренним нормальным UPDATE и должен вызывать мой триггер.

Кто-нибудь сделал подобные наблюдения или может объяснить мне, почему MySQL ведет себя таким образом или уверяет меня, что у меня должна быть некоторая ошибка в моей установке, потому что она должна работать?

Я НЕ нужен ответ с предложением, что я не должен использовать INSERT INTO ... ON DUPLICTE KEY ..., потому что а) это еще не вопрос и б) я не могу легко модифицировать бизнес-приложения Я сейчас работаю.

Спасибо большое за помощь

+0

он предположил бы (Mihai), что часть обновления не удалась на IODKU. Поэтому вместо того, чтобы обвинять триггер обновления, сосредоточьтесь на ошибке IODKU или потенциальном сбое. Значение вашего обновления никогда не происходило, а скорее нежелательные вставки. – Drew

+0

Итак, сначала вы фокусируетесь на неправильном, так как вы не показали, что IODKU работает даже на основе уникального ключевого столкновения. – Drew

+0

Извините, я забыл эту часть. UPDATE имеет место. Это не проблема. Но вы согласитесь, что это должно срабатывать? – TurmDrummer

ответ

1

Я испытал это на smalles возможном масштабе и пришел к выводу.

  1. Обновление запуска работает, как и следовало ожидать. Он вызывается ON DUPLICATE UPDATE. Я мог бы воспроизвести это, вызвав запросы с консоли.

  2. Триггер обновления не вызывается (как я сообщал), когда я выполняю запрос из моего .net-кода, используя соединитель Oracle .net! Я установил текущую версию 6.9.8.0. К этому моменту я не знаю, если это ошибка в текущей версии, или если это общая проблема. Я буду исследовать это дальше, но для этого случая ответ на мой вопрос.

Проблема заключается в том, что для клиринга не проблема MySQL, а проблема с коннектором.

Благодарим за помощь, Люди.

Смежные вопросы