Wat doet INSERT ON DUPLICATE KEY UPDATE in MySQL?

Wat Doet Insert On Duplicate Key Update In Mysql



Tijdens het werken met een MySQL-database kunnen gebruikers af en toe een fout met een dubbele sleutel tegenkomen wanneer ze proberen een nieuw record in een tabel in te voegen. Deze fout treedt op wanneer er al een rij met dezelfde primaire sleutel of unieke sleutel bestaat. Dit probleem kan echter worden verholpen door de bestaande records bij te werken met de nieuwe waarden. In dergelijke gevallen schakelt u de ' INSERT OP DUPLICATE KEY UPDATE ”-functie zal dit probleem effectief oplossen.

Dit bericht laat zien wat 'INSERT ON DUPLICATE KEY UPDATE' is en hoe het werkt in MySQL.







Wat doet INSERT ON DUPLICATE KEY UPDATE in MySQL?

In MySQL, de INSERT OP DUPLICATE KEY UPDATE is een geavanceerd kenmerk van de INSERT-instructie die twee functionaliteiten combineert in één bewerking. Het voegt bijvoorbeeld een record in een specifieke tabel in als het gegeven record nog niet bestaat. Als het gewenste record echter al bestaat, wordt het bestaande record bijgewerkt met de nieuwe waarde.



Om de INSERT ON DUPLICATE KEY UPDATE-functie in te schakelen, moeten gebruikers de onderstaande syntaxis volgen:



INVOEGEN IN [ tafel naam ] ( [ col_1 ] , [ col_2 ] , ... )
WAARDEN ( [ val_1 ] , [ val_2 ] , ... )
BIJ DUBBELE SLEUTELUPDATE [ col_1 ] = [ val_1 ] , [ col_2 ] = [ val_2 ] , ...;





Geef de tabelnaam, kolomnamen en waarden van uw keuze op in plaats van tabel_naam, col_1, col_2, … en val_1, val_2, …, enz.

Voorbeeld: Hoe gebruik ik INSERT ON DUPLICATE KEY UPDATE-functie in MySQL?



Maak eerst verbinding met de MySQL-database met de juiste rechten en voer vervolgens de onderstaande opdracht uit om de gegevens van de tabel 'linuxhint_author' op te halen:

SELECTEER * VAN linuxhint_auteur;

De opdracht select haalt alle records van de tabel 'linuxhint_author' op:

Voer nu de volgende SQL-opdracht uit om een ​​specifiek record in de tabel 'linuxhint_author' in te voegen of bij te werken, met de functie 'ON DUPLICATE KEY UPDATE' ingeschakeld:

INSERT IN linuxhint_author ( ID kaart , naam, leeftijd, authorRank, e-mail )
WAARDEN ( 6 , 'Alex Johnson' , 29 , 3 , 'alex@voorbeeld.com' )
BIJ DUBBELE SLEUTELUPDATE
naam = WAARDEN ( naam ) ,
leeftijd = WAARDEN ( leeftijd ) ,
auteurRang = WAARDEN ( auteurRang ) ,
e-mail = WAARDEN ( e-mailen ) ;

Aangezien het opgegeven record nog niet bestaat in de tabel 'linuxhint_author', zal het met succes in de geselecteerde tabel worden ingevoegd:

Laten we een duplicaatrecord invoegen en kijken hoe de ' BIJ DUBBELE SLEUTELUPDATE ” functie werk in MySQL:

INSERT IN linuxhint_author ( ID kaart , naam, leeftijd, authorRank, e-mail )
WAARDEN ( 3 , 'Michaël Johnson' , 28 , 4 , 'michael@example.com' )
BIJ DUBBELE SLEUTELUPDATE
naam = WAARDEN ( naam ) ,
leeftijd = WAARDEN ( leeftijd ) ,
auteurRang = WAARDEN ( auteurRang ) ,
e-mail = WAARDEN ( e-mailen ) ;

Uit het onderstaande fragment is duidelijk te zien dat het reeds bestaande record met succes is bijgewerkt met de nieuwe waarden:

De functie 'INSERT ON DUPLICATE KEY' kan ook worden toegepast op een specifieke kolom in plaats van op het hele record:

INSERT IN linuxhint_author ( ID kaart , auteurRang )
WAARDEN ( 3 , 2 )
BIJ DUPLICATE KEY UPDATE authorRank = WAARDEN ( auteurRang ) ;

In de bovenstaande code wordt de 'authorRank' van een auteur met de ID '3' bijgewerkt naar een nieuwe waarde '2':

Dit is hoe de functie 'INSERT ON DUPLICATE KEY UPDATE' werkt in MySQL.

Conclusie

In MySQL, de INSERT OP DUPLICATE KEY UPDATE is een geavanceerde functie waarmee we de functionaliteit van het invoegen van een nieuwe rij en het bijwerken/wijzigen van een reeds bestaande rij in één bewerking kunnen combineren. Deze functie helpt de gebruikers om de fout 'dubbele sleutelovertreding' te voorkomen wanneer ze proberen een nieuwe rij in een bepaalde tabel in te voegen. Dit bericht heeft uitgelegd wat 'INSERT ON DUPLICATE KEY UPDATE' is en hoe het werkt in MySQL.