Условные ОБНОВЛЕНИЯ для INSERT ... ON DUPLICATE KEY
Вставка или обновление записей на основе повторяющихся ключевых условий является распространенным сценарием при программировании баз данных . Однако иногда вам может потребоваться дополнительно ограничить условие обновления, сделав его зависимым от дополнительных критериев. К сожалению, синтаксис INSERT ... ON DUPLICATE KEY UPDATE изначально не поддерживает предложения WHERE для условных обновлений.
Преодоление ограничения
Чтобы обойти это ограничение, вы может использовать функцию IF() в предложении UPDATE. Функция ЕСЛИ() позволяет указать альтернативное значение на основе заданного логического выражения.
Пример реализации
Рассмотрите следующую команду 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 < VALUES(last_event_created_at), VALUES(last_event_id), last_event_id);
В этом запросе предложение UPDATE содержит оператор IF(), который проверяет, меньше ли существующее значение Last_event_created_at, чем вставляемое значение. Если существующее значение старше, будет выполнено обновление с заменой Last_event_id новым значением. В противном случае существующий Last_event_id будет сохранен.
Дополнительные соображения
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3