«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как выполнить условные обновления в MySQL INSERT... ПРИ ОБНОВЛЕНИИ ДУБЛИКАЦИОННОГО КЛЮЧА?

Как выполнить условные обновления в MySQL INSERT... ПРИ ОБНОВЛЕНИИ ДУБЛИКАЦИОННОГО КЛЮЧА?

Опубликовано 17 ноября 2024 г.
Просматривать:261

How to Perform Conditional Updates in MySQL\'s INSERT ... ON DUPLICATE KEY UPDATE?

Условное обновление в 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