Mit csinál az INSERT ON DUPLICATE KEY UPDATE a MySQL-ben?

Mit Csinal Az Insert On Duplicate Key Update A Mysql Ben



A MySQL-adatbázissal végzett munka során a felhasználók időnként ismétlődő kulcssértési hibát tapasztalhatnak, amikor új rekordot próbálnak beszúrni egy táblába. Ez a hiba akkor fordul elő, ha már létezik ugyanazzal az elsődleges kulccsal vagy egyedi kulccsal rendelkező sor. Ez a probléma azonban megoldható a meglévő rekordok új értékekkel történő frissítésével. Ilyen esetekben engedélyezze a „ BESZÁLLÍTÁS A KULCS FRISSÍTÉSÉRE ” funkció hatékonyan megoldja ezt a problémát.

Ez a bejegyzés bemutatja, hogy mi az „INSERT ON DUPLICATE KEY UPDATE”, és hogyan működik a MySQL-ben.







Mit csinál az INSERT ON DUPLICATE KEY UPDATE a MySQL-ben?

A MySQL-ben a BESZÁLLÍTÁS A KULCS FRISSÍTÉSÉRE az INSERT utasítás fejlett funkciója, amely két funkciót egyetlen műveletben egyesít. Például beszúr egy rekordot egy adott táblába, ha az adott rekord még nem létezik. Ha azonban a kívánt rekord már létezik, akkor a meglévő rekordot frissíti az új értékkel.



Az INSERT ON DUPLICATE KEY UPDATE funkció engedélyezéséhez a felhasználóknak követniük kell az alábbi szintaxist:



INSERT INTO [ táblázat_neve ] ( [ col_1 ] , [ col_2 ] ,... )
ÉRTÉKEK ( [ val_1 ] , [ val_2 ] ,... )
DUPLIKÁLT KULCS FRISSÍTÉSÉRŐL [ col_1 ] = [ val_1 ] , [ col_2 ] = [ val_2 ] , ...;





Adja meg a tábla nevét, az oszlopneveket és a választott értékeket a táblázat_neve, 1. oszlop, 2. oszlop, … és érték_1, érték_2, … stb. helyén.

Példa: Hogyan használható az INSERT ON DUPLICATE KEY UPDATE funkció a MySQL-ben?



Először csatlakozzon a MySQL adatbázishoz a megfelelő jogosultságokkal, majd hajtsa végre az alábbi parancsot a „linuxhint_author” tábla adatainak lekéréséhez:

KIVÁLASZTÁS * FROM linuxhint_author;

A select parancs lekéri a „linuxhint_author” tábla összes rekordját:

Most futtassa a következő SQL parancsot egy adott rekord beszúrásához vagy frissítéséhez a „linuxhint_author” táblába, az „ON DUPLICATE KEY UPDATE” funkcióval:

INSERT INTO linuxhint_author ( id , név, életkor, authorRank, email )
ÉRTÉKEK ( 6 , 'Alex Johnson' , 29 , 3 , 'alex@example.com' )
DUPLIKÁLT KULCS FRISSÍTÉSÉRŐL
név = ÉRTÉKEK ( név ) ,
életkor = ÉRTÉKEK ( kor ) ,
authorRank = ÉRTÉKEK ( AuthorRank ) ,
email = ÉRTÉKEK ( email ) ;

Mivel a megadott rekord még nem létezik a „linuxhint_author” táblában, sikeresen bekerül a kiválasztott táblába:

Szúrjunk be egy ismétlődő rekordot, és nézzük meg, hogyan DUPLIKÁLT KULCS FRISSÍTÉSÉRŐL ” funkció működik a MySQL-ben:

INSERT INTO linuxhint_author ( id , név, életkor, authorRank, email )
ÉRTÉKEK ( 3 , 'Michael Johnson' , 28 , 4 , 'michael@example.com' )
DUPLIKÁLT KULCS FRISSÍTÉSÉRŐL
név = ÉRTÉKEK ( név ) ,
életkor = ÉRTÉKEK ( kor ) ,
authorRank = ÉRTÉKEK ( AuthorRank ) ,
email = ÉRTÉKEK ( email ) ;

Az alábbi részletből jól látható, hogy a már meglévő rekord sikeresen frissült az új értékekkel:

Az „INSERT ON DUPLICATE KEY” funkció egy adott oszlopra is alkalmazható a teljes rekord helyett:

INSERT INTO linuxhint_author ( id , authorRank )
ÉRTÉKEK ( 3 , 2 )
DUPLICATE KEY UPDATE ON authorRank = ÉRTÉKEK ( AuthorRank ) ;

A fenti kódban a „3” azonosítójú szerző „authorRank” értéke új „2” értékre frissül:

Így működik az „INSERT ON DUPLICATE KEY UPDATE” funkció a MySQL-ben.

Következtetés

A MySQL-ben a BESZÁLLÍTÁS A KULCS FRISSÍTÉSÉRE egy speciális szolgáltatás, amely lehetővé teszi, hogy egyetlen műveletben kombináljuk az új sor beszúrásának és egy már meglévő sor frissítésének/módosításának funkcióit. Ez a funkció segít a felhasználóknak elkerülni a „kettős kulcs megsértése” hibát, amikor új sort próbálnak beszúrni egy adott táblázatba. Ez a bejegyzés elmagyarázta, hogy mi az „INSERT ON DUPLICATE KEY UPDATE”, és hogyan működik a MySQL-ben.