Условное обновление в INSERT ... ON DUPLICATE KEY UPDATE
В MySQL синтаксис INSERT ... ON DUPLICATE KEY UPDATE позволяет автоматическое обновление данных таблицы при обнаружении повторяющегося ключа во время операции вставки. Однако часть запроса UPDATE не поддерживает использование предложения WHERE для указания условных обновлений.
Обходное решение с использованием IF()
Чтобы преодолеть это ограничение, можно использовать функцию IF() для реализации условных обновлений в предложении ON DUPLICATE KEY UPDATE. Функция IF() оценивает условие и возвращает другое значение в зависимости от результата.
Например, рассмотрим следующий оператор INSERT ... ON DUPLICATE KEY UPDATE:
INSERT INTO daily_events (created_on, last_event_id, last_event_created_at) VALUES ('2010-01-19', 23, '2010-01-19 10:23:11') ON DUPLICATE KEY UPDATE last_event_id = IF(last_event_created_atВ этом операторе функция IF() проверяет, меньше ли значение столбца Last_event_created_at в таблице базы данных, чем вставляемое значение (VALUES(last_event_created_at)). Если это правда, он обновляет столбец Last_event_id новым значением из оператора вставки. В противном случае существующее значение остается неизменным.
Этот обходной путь позволяет выполнять условные обновления в инструкциях INSERT ... ON DUPLICATE KEY UPDATE, не прибегая к комбинациям запросов INSERT/UPDATE/SELECT, которые могут не подходить для репликации. сценарии.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3