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.