Ce face INSERT ON DUPLICATE KEY UPDATE în MySQL?

Ce Face Insert On Duplicate Key Update In Mysql



În timp ce lucrează cu o bază de date MySQL, utilizatorii pot întâlni ocazional o eroare de încălcare a cheii duplicate atunci când încearcă să insereze o înregistrare nouă într-un tabel. Această eroare apare atunci când există deja un rând cu aceeași cheie primară sau cheie unică. Cu toate acestea, această problemă poate fi rezolvată prin actualizarea înregistrărilor existente cu noile valori. În astfel de cazuri, activarea „ INSERT LA ACTUALIZAREA CHEIEI DUPLICATE ” caracteristica va rezolva efectiv această problemă.

Această postare va demonstra ce este „INSERT ON DUPLICATE KEY UPDATE” și cum funcționează în MySQL.







Ce face INSERT ON DUPLICATE KEY UPDATE în MySQL?

În MySQL, INSERT LA ACTUALIZAREA CHEIEI DUPLICATE este o caracteristică avansată a instrucțiunii INSERT care combină două funcționalități într-o singură operație. De exemplu, inserează o înregistrare într-un anumit tabel dacă înregistrarea dată nu există deja. Cu toate acestea, dacă înregistrarea dorită există deja, atunci va actualiza înregistrarea existentă cu noua valoare.



Pentru a activa funcția INSERT ON DUPLICATE KEY UPDATE, utilizatorii trebuie să urmeze sintaxa de mai jos:



INTRODU IN [ nume_tabel ] ( [ col_1 ] , [ col_2 ] ,... )
VALORI ( [ val_1 ] , [ val_2 ] ,... )
LA ACTUALIZAREA CHEIEI DUPLICATE [ col_1 ] = [ val_1 ] , [ col_2 ] = [ val_2 ] , ...;





Specificați numele tabelului, numele coloanelor și valorile la alegere în locul numelui_tabelului, col_1, col_2, … și val_1, val_2, … etc.

Exemplu: Cum se utilizează funcția INSERT ON DUPLICATE KEY UPDATE în MySQL?



Mai întâi, conectați-vă la baza de date MySQL cu privilegiile corespunzătoare și apoi executați comanda de mai jos pentru a prelua datele din tabelul „linuxhint_author”:

SELECTAȚI * FROM linuxhint_author;

Comanda select preia toate înregistrările din tabelul „linuxhint_author”:

Acum rulați următoarea comandă SQL pentru a insera sau actualiza o anumită înregistrare în tabelul „linuxhint_author”, cu funcția „ON DUPLICATE KEY UPDATE” activată:

INSERT INTO linuxhint_author ( id , nume, vârstă, autorRank, e-mail )
VALORI ( 6 , „Alex Johnson” , 29 , 3 , „alex@example.com” )
LA ACTUALIZAREA CHEIEI DUPLICATE
nume = VALORI ( Nume ) ,
varsta = VALORI ( vârstă ) ,
autorRank = VALORI ( autorRank ) ,
email = VALORI ( e-mail ) ;

Deoarece înregistrarea specificată nu există deja în tabelul „linuxhint_author”, va fi inserată cu succes în tabelul selectat:

Să introducem o înregistrare duplicată și să vedem cum „ LA ACTUALIZAREA CHEIEI DUPLICATE ”funcționează funcția în MySQL:

INSERT INTO linuxhint_author ( id , nume, vârstă, autorRank, e-mail )
VALORI ( 3 , „Michael Johnson” , 28 , 4 , „michael@example.com” )
LA ACTUALIZAREA CHEIEI DUPLICATE
nume = VALORI ( Nume ) ,
varsta = VALORI ( vârstă ) ,
autorRank = VALORI ( autorRank ) ,
email = VALORI ( e-mail ) ;

Din fragmentul de mai jos, se poate observa clar că înregistrarea deja existentă este actualizată cu succes cu noile valori:

Caracteristica „INSERT ON DUPLICATE KEY” poate fi aplicată și unei anumite coloane în loc de întreaga înregistrare:

INSERT INTO linuxhint_author ( id , autorRank )
VALORI ( 3 , 2 )
LA ACTUALIZAREA CHEIEI DUPLICATE autorRank = VALORI ( autorRank ) ;

În codul de mai sus, „authorRank” al unui autor cu ID „3” este actualizat la o nouă valoare „2”:

Așa funcționează funcția „INSERT ON DUPLICATE KEY UPDATE” în ​​MySQL.

Concluzie

În MySQL, INSERT LA ACTUALIZAREA CHEIEI DUPLICATE este o caracteristică avansată care ne permite să combinăm funcționalitatea de inserare a unui rând nou și de actualizare/modificare a unui rând deja existent într-o singură operațiune. Această caracteristică ajută utilizatorii să evite eroarea „încălcarea cheii duplicate” atunci când încearcă să insereze un rând nou într-un anumit tabel. Această postare a explicat ce este „INSERT ON DUPLICATE KEY UPDATE” și cum funcționează în MySQL.