Что делает INSERT ON DUPLICATE KEY UPDATE в MySQL?

Cto Delaet Insert On Duplicate Key Update V Mysql



При работе с базой данных MySQL пользователи могут иногда сталкиваться с ошибкой нарушения двойного ключа при попытке вставить новую запись в таблицу. Эта ошибка возникает, когда уже существует строка с таким же первичным или уникальным ключом. Однако эту проблему можно решить, обновив существующие записи новыми значениями. В таких случаях включение « ВСТАВИТЬ НА ОБНОВЛЕНИЕ ДУБЛИКАЦИИ КЛЮЧА ” эффективно решит эту проблему.

Этот пост продемонстрирует, что такое «INSERT ON DUPLICATE KEY UPDATE» и как это работает в MySQL.







Что делает INSERT ON DUPLICATE KEY UPDATE в MySQL?

В MySQL, ВСТАВИТЬ НА ОБНОВЛЕНИЕ ДУБЛИКАЦИИ КЛЮЧА — это расширенная функция инструкции INSERT, которая объединяет две функции в одну операцию. Например, он вставляет запись в определенную таблицу, если данная запись еще не существует. Однако, если нужная запись уже существует, она обновит существующую запись новым значением.



Чтобы включить функцию INSERT ON DUPLICATE KEY UPDATE, пользователи должны следовать приведенному ниже синтаксису:



ВСТАВИТЬ В [ имя_таблицы ] ( [ col_1 ] , [ col_2 ] , ... )
ЦЕННОСТИ ( [ значение_1 ] , [ значение_2 ] , ... )
ПРИ ОБНОВЛЕНИИ Дубликата ключа [ col_1 ] '=' [ значение_1 ] , [ col_2 ] '=' [ значение_2 ] , ...;





Укажите имя таблицы, имена столбцов и значения по вашему выбору вместо table_name, col_1, col_2, … и val_1, val_2, … и т. д.

Пример: Как использовать функцию INSERT ON DUPLICATE KEY UPDATE в MySQL?



Сначала подключитесь к базе данных MySQL с соответствующими привилегиями, а затем выполните приведенную ниже команду, чтобы получить данные таблицы «linuxhint_author»:

ВЫБИРАТЬ * ОТ linuxhint_author;

Команда select извлекает все записи таблицы «linuxhint_author»:

Теперь выполните следующую команду SQL, чтобы вставить или обновить определенную запись в таблице «linuxhint_author» с включенной функцией «ON DUPLICATE KEY UPDATE»:

ВСТАВИТЬ В linuxhint_author ( идентификатор , имя, возраст, авторский ранг, электронная почта )
ЦЕННОСТИ ( 6 , 'Алекс Джонсон' , 29 , 3 , 'алекс@example.com' )
ПРИ ОБНОВЛЕНИИ Дубликата ключа
имя = ЗНАЧЕНИЯ ( имя ) ,
возраст = ЦЕННОСТИ ( возраст ) ,
AuthorRank = ЗНАЧЕНИЯ ( авторРанг ) ,
электронная почта = ЦЕННОСТИ ( электронная почта ) ;

Поскольку указанная запись еще не существует в таблице «linuxhint_author», она будет успешно вставлена ​​в выбранную таблицу:

Давайте вставим дубликат записи и посмотрим, как « ПРИ ОБНОВЛЕНИИ Дубликата ключа ” работает в MySQL:

ВСТАВИТЬ В linuxhint_author ( идентификатор , имя, возраст, авторский ранг, электронная почта )
ЦЕННОСТИ ( 3 , 'Майкл Джонсон' , 28 , 4 , 'майкл@example.com' )
ПРИ ОБНОВЛЕНИИ Дубликата ключа
имя = ЗНАЧЕНИЯ ( имя ) ,
возраст = ЦЕННОСТИ ( возраст ) ,
AuthorRank = ЗНАЧЕНИЯ ( авторРанг ) ,
электронная почта = ЦЕННОСТИ ( электронная почта ) ;

Из приведенного ниже фрагмента ясно видно, что уже существующая запись успешно обновлена ​​новыми значениями:

Функцию «INSERT ON DUPLICATE KEY» также можно применить к определенному столбцу, а не ко всей записи:

ВСТАВИТЬ В linuxhint_author ( идентификатор , авторРанг )
ЦЕННОСТИ ( 3 , 2 )
ПРИ ОБНОВЛЕНИИ ДУБЛИКАЦИОННОГО КЛЮЧА authorRank = VALUES ( авторРанг ) ;

В приведенном выше коде «authorRank» автора с идентификатором «3» обновляется до нового значения «2»:

Вот как работает функция «INSERT ON DUPLICATE KEY UPDATE» в MySQL.

Заключение

В MySQL, ВСТАВИТЬ НА ОБНОВЛЕНИЕ ДУБЛИКАЦИИ КЛЮЧА — это расширенная функция, которая позволяет нам совмещать функциональность вставки новой строки и обновления/изменения уже существующей строки в одной операции. Эта функция помогает пользователям избежать ошибки «нарушение повторяющегося ключа» при попытке вставить новую строку в определенную таблицу. В этом посте объясняется, что такое «INSERT ON DUPLICATE KEY UPDATE» и как это работает в MySQL.