MySQL Event Scheduler

0

Я установил 1 mysql-события, которые передают все данные с флагом 0 из одной таблицы в другую (таблица 2) каждые 12 часов, а затем обновляют запрос, чтобы установить как 1 флаг после передачи. INSERT и UPDATE находятся в одном событии.

Моя проблема заключается в том, что все перенесенные данные дублируются в таблице 2, которая выглядит как 2 события.

Любая идея?

Вот мои коды событий:

DELIMITER |
CREATE
    EVENT
    IF NOT EXISTS
    event_transfer
    ON SCHEDULE EVERY 12 HOUR
    STARTS '2018-08-10 06:00:00'
    ON COMPLETION NOT PRESERVE
    ENABLE DO BEGIN INSERT INTO dbsample.tblmirror(Column1, Column2, Column3) (SELECT Column1, Column2, Column3 FROM tblmaster WHERE is_transfer = 0); UPDATE dbsample.tblmaster SET is_transfer = 1 WHERE is_transfer = 0; END | DELIMITER;

  • 1
    Когда вы показываете СОБЫТИЯ есть только 1 подарок?
  • 0
    Пожалуйста, оставьте свой код события.
Показать ещё 7 комментариев
Теги:
mysql-event

1 ответ

0

Цитируя P.Salmon:

Никакого дублирующегося события, простого кода и триггеров. Я сомневаюсь, что проблема здесь вообще.

П.Салмон прямо здесь, и было бы хорошо, если бы вы выяснили, какая другая работа это делает.
Но вы также можете избежать этой проблемы по-другому. Поскольку вы не хотите иметь дубликаты, есть способ обнаружить дубликаты, не так ли? Будь то, что комбинация этих трех столбцов должна быть уникальной или что-то еще, тогда укажите это в своей базе данных.

Создайте уникальный индекс (или первичный ключ) в столбцах, которые делают каждую строку уникальной.

Затем вместо простого INSERT вы INSERT IGNORE и voilà, у вас больше не будет дубликатов.

Указание руководства:

Если вы используете модификатор IGNORE, ошибки, возникающие при выполнении инструкции INSERT, игнорируются. Например, без IGNORE строка, которая дублирует существующий индекс UNIQUE или PRIMARY KEY в таблице, вызывает ошибку с дубликат-ключом, и оператор прерывается. С IGNORE строка отбрасывается и ошибок не возникает. Игнорируемые ошибки могут генерировать предупреждения вместо этого, хотя ошибок с дубликат-ключом нет.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню