Hva gjør INSERT ON DUPLICATE KEY UPDATE i MySQL?

Hva Gjor Insert On Duplicate Key Update I Mysql



Mens de arbeider med en MySQL-database, kan brukere av og til støte på en duplikatnøkkelfeil når de forsøker å sette inn en ny post i en tabell. Denne feilen oppstår når en rad med samme primærnøkkel eller unike nøkkel allerede eksisterer. Dette problemet kan imidlertid løses ved å oppdatere de eksisterende postene med de nye verdiene. I slike tilfeller aktiverer du ' SETTE INN PÅ DUPLIKAT NØKKELOPPDATERING '-funksjonen vil effektivt løse dette problemet.

Dette innlegget vil demonstrere hva som er 'INSERT ON DUPLICATE KEY UPDATE' og hvordan det fungerer i MySQL.







Hva gjør INSERT ON DUPLICATE KEY UPDATE i MySQL?

I MySQL er SETTE INN PÅ DUPLIKAT NØKKELOPPDATERING er en avansert funksjon i INSERT-setningen som kombinerer to funksjoner til en enkelt operasjon. For eksempel setter den inn en post i en bestemt tabell hvis den gitte posten ikke allerede eksisterer. Men hvis den ønskede posten allerede eksisterer, vil den oppdatere den eksisterende posten med den nye verdien.



For å aktivere funksjonen INSERT ON DUPLICATE KEY UPDATE, må brukere følge syntaksen nedenfor:



SETTE INN I [ tabellnavn ] ( [ col_1 ] , [ col_2 ] , ... )
VERDIER ( [ val_1 ] , [ val_2 ] , ... )
PÅ DUPLIKAT NØKKELOPPDATERING [ col_1 ] = [ val_1 ] , [ col_2 ] = [ val_2 ] , ...;





Spesifiser tabellnavnet, kolonnenavnene og verdiene du ønsker i stedet for tabellnavn, kolonne_1, kolonne_2, … og val_1, val_2, … osv.

Eksempel: Hvordan bruke INSERT ON DUPLICATE KEY UPDATE-funksjonen i MySQL?



Koble først til MySQL-databasen med passende rettigheter og utfør deretter kommandoen nedenfor for å hente dataene til 'linuxhint_author'-tabellen:

PLUKKE UT * FRA linuxhint_author;

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

Kjør nå følgende SQL-kommando for å sette inn eller oppdatere en spesifikk post i 'linuxhint_author'-tabellen, med funksjonen 'ON DUPLICATE KEY UPDATE' aktivert:

INSERT INTO linuxhint_author ( id , navn, alder, forfatterrangering, e-post )
VERDIER ( 6 , 'Alex Johnson' , 29 , 3 , 'alex@example.com' )
PÅ DUPLIKAT NØKKELOPPDATERING
navn = VERDIER ( Navn ) ,
alder = VERDIER ( alder ) ,
forfatterRank = VERDIER ( forfatterRank ) ,
e-post = VERDIER ( e-post ) ;

Siden den angitte posten ikke allerede eksisterer i 'linuxhint_author'-tabellen, vil den bli satt inn i den valgte tabellen:

La oss sette inn en duplikatpost og se hvordan ' PÅ DUPLIKAT NØKKELOPPDATERING ' funksjonsarbeid i MySQL:

INSERT INTO linuxhint_author ( id , navn, alder, forfatterrangering, e-post )
VERDIER ( 3 , 'Michael Johnson' , 28 , 4 , 'michael@example.com' )
PÅ DUPLIKAT NØKKELOPPDATERING
navn = VERDIER ( Navn ) ,
alder = VERDIER ( alder ) ,
forfatterRank = VERDIER ( forfatterRank ) ,
e-post = VERDIER ( e-post ) ;

Fra utdraget nedenfor kan det tydelig sees at den allerede eksisterende posten er vellykket oppdatert med de nye verdiene:

Funksjonen 'INSERT ON DUPLICATE KEY' kan også brukes på en bestemt kolonne i stedet for hele posten:

INSERT INTO linuxhint_author ( id , forfatterrang )
VERDIER ( 3 , 2 )
PÅ DUBLIKAT NØKKELOPPDATERING forfatterRank = VERDIER ( forfatterRank ) ;

I koden ovenfor oppdateres 'authorRank' til en forfatter med ID '3' til en ny verdi '2':

Dette er hvordan funksjonen 'INSERT ON DUPLICATE KEY UPDATE' fungerer i MySQL.

Konklusjon

I MySQL er SETTE INN PÅ DUPLIKAT NØKKELOPPDATERING er en avansert funksjon som lar oss kombinere funksjonaliteten ved å sette inn en ny rad og oppdatere/endre en allerede eksisterende rad i en enkelt operasjon. Denne funksjonen hjelper brukerne med å unngå feilen 'dupliserte nøkkelbrudd' når de prøver å sette inn en ny rad i en bestemt tabell. Dette innlegget har forklart hva som er 'INSERT ON DUPLICATE KEY UPDATE' og hvordan det fungerer i MySQL.