Cosa fa INSERT ON DUPLICATE KEY UPDATE in MySQL?

Cosa Fa Insert On Duplicate Key Update In Mysql



Mentre lavorano con un database MySQL, gli utenti possono occasionalmente riscontrare un errore di violazione della chiave duplicata quando tentano di inserire un nuovo record in una tabella. Questo errore si verifica quando esiste già una riga con la stessa chiave primaria o chiave univoca. Tuttavia, questo problema può essere risolto aggiornando i record esistenti con i nuovi valori. In tali casi, abilitando il “ INSERIRE SU AGGIORNAMENTO CHIAVE DUPLICATO ” risolverà efficacemente questo problema.

Questo post dimostrerà cos'è 'INSERT ON DUPLICATE KEY UPDATE' e come funziona in MySQL.







Cosa fa INSERT ON DUPLICATE KEY UPDATE in MySQL?

In MySQL, il INSERIRE SU AGGIORNAMENTO CHIAVE DUPLICATO è una funzionalità avanzata dell'istruzione INSERT che combina due funzionalità in un'unica operazione. Ad esempio, inserisce un record in una tabella specifica se il record specificato non esiste già. Tuttavia, se il record desiderato esiste già, aggiornerà il record esistente con il nuovo valore.



Per abilitare la funzione INSERT ON DUPLICATE KEY UPDATE, gli utenti devono seguire la sintassi indicata di seguito:



INSERIRE [ nome_tabella ] ( [ col_1 ] , [ col_2 ] , ... )
VALORI ( [ vale_1 ] , [ vale_2 ] , ... )
IN AGGIORNAMENTO DELLA CHIAVE DUPLICATA [ col_1 ] = [ vale_1 ] , [ col_2 ] = [ vale_2 ] , ...;





Specifica il nome della tabella, i nomi delle colonne e i valori di tua scelta al posto di table_name, col_1, col_2, … e val_1, val_2, …, ecc.

Esempio: come utilizzare la funzionalità INSERT ON DUPLICATE KEY UPDATE in MySQL?



Innanzitutto, connettiti al database MySQL con i privilegi appropriati, quindi esegui il comando seguente per recuperare i dati della tabella 'linuxhint_author':

SELEZIONARE * DA linuxhint_author;

Il comando select recupera tutti i record della tabella 'linuxhint_author':

Ora esegui il seguente comando SQL per inserire o aggiornare un record specifico nella tabella 'linuxhint_author', con la funzione 'ON DUPLICATE KEY UPDATE' abilitata:

INSERISCI IN linuxhint_author ( id , nome, età, authorRank, email )
VALORI ( 6 , 'Alex Johnson' , 29 , 3 , 'alex@example.com' )
IN AGGIORNAMENTO DELLA CHIAVE DUPLICATA
nome = VALORI ( nome ) ,
età = VALORI ( età ) ,
authorRank = VALORI ( autoreRank ) ,
e-mail = VALORI ( e-mail ) ;

Poiché il record specificato non esiste già nella tabella 'linuxhint_author', verrà inserito correttamente nella tabella selezionata:

Inseriamo un record duplicato e vediamo come il ' IN AGGIORNAMENTO DELLA CHIAVE DUPLICATA ” funzionalità funzionano in MySQL:

INSERISCI IN linuxhint_author ( id , nome, età, authorRank, email )
VALORI ( 3 , 'Michael Johnson' , 28 , 4 , 'michael@example.com' )
IN AGGIORNAMENTO DELLA CHIAVE DUPLICATA
nome = VALORI ( nome ) ,
età = VALORI ( età ) ,
authorRank = VALORI ( autoreRank ) ,
e-mail = VALORI ( e-mail ) ;

Dallo snippet sottostante, si può vedere chiaramente che il record già esistente viene aggiornato con successo con i nuovi valori:

La funzionalità “INSERIRE SU CHIAVE DUPLICATA” può essere applicata anche a una colonna specifica invece che all'intero record:

INSERISCI IN linuxhint_author ( id , autoreRank )
VALORI ( 3 , 2 )
ALL'AGGIORNAMENTO DELLA CHIAVE DUPLICATA authorRank = VALUES ( autoreRank ) ;

Nel codice sopra, il 'authorRank' di un autore con l'ID '3' viene aggiornato a un nuovo valore '2':

Ecco come funziona la funzione 'INSERT ON DUPLICATE KEY UPDATE' in MySQL.

Conclusione

In MySQL, il INSERIRE SU AGGIORNAMENTO CHIAVE DUPLICATO è una funzionalità avanzata che ci permette di unire le funzionalità di inserimento di una nuova riga e di aggiornamento/modifica di una riga già esistente in un'unica operazione. Questa funzione aiuta gli utenti a evitare l'errore di 'violazione della chiave duplicata' quando si tenta di inserire una nuova riga in una determinata tabella. Questo post ha spiegato cos'è 'INSERT ON DUPLICATE KEY UPDATE' e come funziona in MySQL.