У меня сложная проблема с созданием одного оператора SQL для работы. У меня три таблицы, активные, неактивные и история. Они идентичны, за исключением того, что только поле pointid в active отмечено как первичный ключ.MySQL INSERT ON DUPLICATE UPDATE
Struct:
-pointid int
-income_time timestamp
-outcome_time timestamp
-receipted_time timestamp
-type int
-isack int
Im вставки запроса в активное использование «INSERT INTO активной (pointid, income_time, outcome_time, receipted_time, тип, isack) VALUES (100, CURRENT_TIMESTAMP, NULL, NULL, 15, 0) на DUPLICATE KEY UPDATE .. ...
и нужна помощь, чтобы построить конец запроса, что он будет функционировать следующим образом:
-если ряд с pointid не существует, сделайте простую вставку
-если она действительно существует, проверьте, type такой же. если есть, ничего не делать
-образный тип сильно, и ack = 0, скопируйте строку в неактивную (и установите для параметра result_time значение CURRENT_TIMESTAMP), затем обновите текущую строку в активном (тип, доход_time, isack).
-if тип if different и ack = 1, скопировать строку в историю (и установить result_time в CURRENT_TIMESTAMP), а затем обновить текущую строку в активном (тип, доход_time, isack).
логически, я думаю, что это может быть возможно с использованием операторов IF, но пока не найдено рабочего решения. Есть идеи?
Почему вы ограничены одним запросом? Простой выбор, за которым следуют соответствующие INSERT, UPDATE или noaction, будет четким и удобочитаемым. –