Què fa INSERT ON DUPLICATE KEY UPDATE a MySQL?

Que Fa Insert On Duplicate Key Update A Mysql



Mentre treballen amb una base de dades MySQL, els usuaris poden trobar ocasionalment un error de violació de clau duplicada quan intenten inserir un registre nou a una taula. Aquest error es produeix quan ja existeix una fila amb la mateixa clau primària o clau única. Tanmateix, aquest problema es pot solucionar actualitzant els registres existents amb els nous valors. En aquests casos, habilitant el ' INSERIR A L'ACTUALITZACIÓ DE LA CLAU DUPLICADA La funció resoldrà aquest problema de manera efectiva.

Aquesta publicació demostrarà què és 'INSERT ON DUPLICATE KEY UPDATE' i com funciona a MySQL.







Què fa INSERT ON DUPLICATE KEY UPDATE a MySQL?

A MySQL, el INSERIR A L'ACTUALITZACIÓ DE LA CLAU DUPLICADA és una característica avançada de la instrucció INSERT que combina dues funcionalitats en una única operació. Per exemple, insereix un registre en una taula específica si el registre donat encara no existeix. Tanmateix, si el registre desitjat ja existeix, actualitzarà el registre existent amb el nou valor.



Per habilitar la funció INSERT ON DUPLICATE KEY UPDATE, els usuaris han de seguir la sintaxi que s'indica a continuació:



INSERTAR A [ nom_taula ] ( [ col_1 ] , [ col_2 ] , ... )
VALORS ( [ val_1 ] , [ val_2 ] , ... )
EN ACTUALITZACIÓ DE CLAU DUPLICADA [ col_1 ] = [ val_1 ] , [ col_2 ] = [ val_2 ] , ...;





Especifiqueu el nom de la taula, els noms de les columnes i els valors que trieu en lloc de nom_taula, col_1, col_2, … i val_1, val_2, …, etc.

Exemple: Com utilitzar la funció INSERT ON DUPLICATE KEY UPDATE a MySQL?



Primer, connecteu-vos a la base de dades MySQL amb els privilegis adequats i, a continuació, executeu l'ordre següent per obtenir les dades de la taula 'linuxhint_author':

SELECCIONA * DE linuxhint_author;

L'ordre select recupera tots els registres de la taula 'linuxhint_author':

Ara executeu l'ordre SQL següent per inserir o actualitzar un registre específic a la taula 'linuxhint_author', amb la funció 'ON DUPLICATE KEY UPDATE' activada:

INSERT INTO linuxhint_author ( id , nom, edat, autorRank, correu electrònic )
VALORS ( 6 , 'Alex Johnson' , 29 , 3 , 'alex@example.com' )
EN ACTUALITZACIÓ DE CLAU DUPLICADA
nom = VALORS ( nom ) ,
edat = VALORS ( edat ) ,
autorRank = VALORS ( autorRank ) ,
correu electrònic = VALORS ( correu electrònic ) ;

Com que el registre especificat encara no existeix a la taula 'linuxhint_author', s'inserirà correctament a la taula seleccionada:

Inseriu un registre duplicat i veiem com el ' EN ACTUALITZACIÓ DE CLAU DUPLICADA ”funció de funcions a MySQL:

INSERT INTO linuxhint_author ( id , nom, edat, autorRank, correu electrònic )
VALORS ( 3 , 'Michael Johnson' , 28 , 4 , 'michael@example.com' )
EN ACTUALITZACIÓ DE CLAU DUPLICADA
nom = VALORS ( nom ) ,
edat = VALORS ( edat ) ,
autorRank = VALORS ( autorRank ) ,
correu electrònic = VALORS ( correu electrònic ) ;

A partir del fragment següent, es pot veure clarament que el registre ja existent s'ha actualitzat correctament amb els nous valors:

La funció 'INSERT ON DUPLICATE KEY' també es pot aplicar a una columna específica en lloc del registre sencer:

INSERT INTO linuxhint_author ( id , autorRank )
VALORS ( 3 , 2 )
EN ACTUALITZACIÓ DE CLAU DUPLICADA authorRank = VALORS ( autorRank ) ;

Al codi anterior, el 'authorRank' d'un autor amb l'ID '3' s'està actualitzant a un nou valor '2':

Així és com funciona la funció 'INSERT ON DUPLICATE KEY UPDATE' a MySQL.

Conclusió

A MySQL, el INSERIR A L'ACTUALITZACIÓ DE LA CLAU DUPLICADA és una característica avançada que ens permet combinar la funcionalitat d'inserir una nova fila i actualitzar/modificar una fila ja existent en una sola operació. Aquesta característica ajuda els usuaris a evitar l'error de 'infracció de clau duplicada' quan intenten inserir una nova fila en una taula concreta. Aquesta publicació ha explicat què és 'INSERT ON DUPLICATE KEY UPDATE' i com funciona a MySQL.