Hvad gør INSERT ON DUPLICATE KEY UPDATE i MySQL?

Hvad Gor Insert On Duplicate Key Update I Mysql



Mens de arbejder med en MySQL-database, kan brugere lejlighedsvis støde på en duplikatnøglefejl, når de forsøger at indsætte en ny post i en tabel. Denne fejl opstår, når en række med den samme primære nøgle eller unikke nøgle allerede eksisterer. Dette problem kan dog løses ved at opdatere de eksisterende poster med de nye værdier. I sådanne tilfælde aktiveres ' INDSÆT PÅ DUBLIKAT NØGLEOPDATERING funktion vil effektivt løse dette problem.

Dette indlæg vil demonstrere, hvad der er 'INSERT ON DUPLICATE KEY UPDATE', og hvordan det virker i MySQL.







Hvad gør INSERT ON DUPLICATE KEY UPDATE i MySQL?

I MySQL er INDSÆT PÅ DUBLIKAT NØGLEOPDATERING er en avanceret funktion i INSERT-sætningen, der kombinerer to funktionaliteter i en enkelt operation. For eksempel indsætter den en post i en specifik tabel, hvis den givne post ikke allerede eksisterer. Men hvis den ønskede post allerede eksisterer, opdaterer den den eksisterende post med den nye værdi.



For at aktivere funktionen INSERT ON DUPLICATE KEY UPDATE skal brugere følge nedenstående syntaks:



INDSÆT I [ tabelnavn ] ( [ col_1 ] , [ col_2 ] , ... )
VÆRDIER ( [ val_1 ] , [ val_2 ] , ... )
PÅ DUBLIKAT NØGLOPDATERING [ col_1 ] = [ val_1 ] , [ col_2 ] = [ val_2 ] , ...;





Angiv tabelnavnet, kolonnenavnene og værdierne efter eget valg i stedet for tabelnavn, kolonne_1, kolonne_2, … og val_1, val_2, … osv.

Eksempel: Hvordan bruger man INSERT ON DUBLIKATKEY UPDATE-funktionen i MySQL?



Først skal du oprette forbindelse til MySQL-databasen med passende privilegier og derefter udføre kommandoen nedenfor for at hente dataene fra 'linuxhint_author'-tabellen:

VÆLG * FRA linuxhint_author;

Select-kommandoen henter alle poster i 'linuxhint_author'-tabellen:

Kør nu følgende SQL-kommando for at indsætte eller opdatere en specifik post i 'linuxhint_author'-tabellen med funktionen 'ON DUPLICATE KEY UPDATE' aktiveret:

INSERT INTO linuxhint_author ( id , navn, alder, forfatterrang, e-mail )
VÆRDIER ( 6 , 'Alex Johnson' , 29 , 3 , 'alex@example.com' )
PÅ DUBLIKAT NØGLOPDATERING
navn = VÆRDIER ( navn ) ,
alder = VÆRDIER ( alder ) ,
forfatterRank = VÆRDIER ( forfatterrang ) ,
e-mail = VÆRDIER ( e-mail ) ;

Da den angivne post ikke allerede findes i 'linuxhint_author'-tabellen, vil den blive indsat i den valgte tabel:

Lad os indsætte en dubletpost og se, hvordan ' PÅ DUBLIKAT NØGLOPDATERING ” funktionsarbejde i MySQL:

INSERT INTO linuxhint_author ( id , navn, alder, forfatterrang, e-mail )
VÆRDIER ( 3 , 'Michael Johnson' , 28 , 4 , 'michael@example.com' )
PÅ DUBLIKAT NØGLOPDATERING
navn = VÆRDIER ( navn ) ,
alder = VÆRDIER ( alder ) ,
forfatterRank = VÆRDIER ( forfatterrang ) ,
e-mail = VÆRDIER ( e-mail ) ;

Fra nedenstående uddrag kan det tydeligt ses, at den allerede eksisterende post er blevet opdateret med de nye værdier:

Funktionen 'INSERT ON DUPLICATE KEY' kan også anvendes på en specifik kolonne i stedet for hele posten:

INSERT INTO linuxhint_author ( id , forfatterrang )
VÆRDIER ( 3 , 2 )
VED DUBLIKAT NØGLEOPDATERING forfatterRank = VÆRDIER ( forfatterrang ) ;

I ovenstående kode opdateres 'authorRank' for en forfatter med ID '3' til en ny værdi '2':

Sådan fungerer funktionen 'INSERT ON DUPLICATE KEY UPDATE' i MySQL.

Konklusion

I MySQL er INDSÆT PÅ DUBLIKAT NØGLEOPDATERING er en avanceret funktion, der giver os mulighed for at kombinere funktionaliteten med at indsætte en ny række og opdatere/ændre en allerede eksisterende række i en enkelt operation. Denne funktion hjælper brugerne med at undgå fejlen 'duplicate key violation', når de forsøger at indsætte en ny række i en bestemt tabel. Dette indlæg har forklaret, hvad der er 'INSERT ON DUPLICATE KEY UPDATE', og hvordan det virker i MySQL.