Dok rade s MySQL bazom podataka, korisnici se povremeno mogu susresti s pogreškom kršenja dupliciranog ključa kada pokušavaju umetnuti novi zapis u tablicu. Ova se pogreška pojavljuje kada red s istim primarnim ključem ili jedinstvenim ključem već postoji. Međutim, ovaj se problem može riješiti ažuriranjem postojećih zapisa s novim vrijednostima. U takvim slučajevima, omogućavanje ' UMETNI NA DUPLIKAT AŽURIRANJA KLJUČA ” učinkovito će riješiti ovaj problem.
Ovaj post će pokazati što je 'INSERT ON DUPLICATE KEY UPDATE' i kako radi u MySQL-u.
Što INSERT ON DUPLICATE KEY UPDATE radi u MySQL-u?
U MySQL-u, UMETNI NA DUPLIKAT AŽURIRANJA KLJUČA je napredna značajka naredbe INSERT koja kombinira dvije funkcionalnosti u jednu operaciju. Na primjer, umeće zapis u određenu tablicu ako dati zapis već ne postoji. Međutim, ako željeni zapis već postoji, ažurirat će postojeći zapis s novom vrijednošću.
Kako bi omogućili značajku INSERT ON DUPLICATE KEY UPDATE, korisnici moraju slijediti dolje navedenu sintaksu:
UMETNUTI U [ naziv_tablice ] ( [ stupac_1 ] , [ stupac_2 ] , ... )
VRIJEDNOSTI ( [ val_1 ] , [ val_2 ] , ... )
PRI AŽURIRANJU DUPLIKATA KLJUČA [ stupac_1 ] = [ val_1 ] , [ stupac_2 ] = [ val_2 ] , ...;
Navedite naziv tablice, nazive stupaca i vrijednosti po vašem izboru umjesto table_name, col_1, col_2, … i val_1, val_2, … itd.
Primjer: Kako koristiti značajku INSERT ON DUPLICATE KEY UPDATE u MySQL?
Prvo se povežite s MySQL bazom podataka s odgovarajućim privilegijama, a zatim izvršite donju naredbu za dohvaćanje podataka tablice 'linuxhint_author':
IZABERI * FROM linuxhint_author;
Naredba select dohvaća sve zapise tablice “linuxhint_author”:
Sada pokrenite sljedeću SQL naredbu za umetanje ili ažuriranje određenog zapisa u tablici 'linuxhint_author', s omogućenom značajkom 'ON DUPLICATE KEY UPDATE':
INSERT INTO linuxhint_author ( iskaznica , ime, dob, rang autora, email )VRIJEDNOSTI ( 6 , 'Alex Johnson' , 29 , 3 , 'alex@example.com' )
PRI AŽURIRANJU DUPLIKATA KLJUČA
naziv = VRIJEDNOSTI ( Ime ) ,
dob = VRIJEDNOSTI ( dob ) ,
autorRank = VRIJEDNOSTI ( autorRank ) ,
email = VRIJEDNOSTI ( elektronička pošta ) ;
Budući da navedeni zapis već ne postoji u tablici ‘linuxhint_author’, on će biti uspješno umetnut u odabranu tablicu:
Umetnimo dvostruki zapis i vidimo kako ' PRI AŽURIRANJU DUPLIKATA KLJUČA ” funkcija rada u MySQL-u:
INSERT INTO linuxhint_author ( iskaznica , ime, dob, rang autora, email )VRIJEDNOSTI ( 3 , 'Michael Johnson' , 28 , 4 , 'michael@example.com' )
PRI AŽURIRANJU DUPLIKATA KLJUČA
naziv = VRIJEDNOSTI ( Ime ) ,
dob = VRIJEDNOSTI ( dob ) ,
autorRank = VRIJEDNOSTI ( autorRank ) ,
email = VRIJEDNOSTI ( elektronička pošta ) ;
Iz donjeg isječka jasno se može vidjeti da je već postojeći zapis uspješno ažuriran novim vrijednostima:
Značajka 'INSERT ON DUPLICATE KEY' također se može primijeniti na određeni stupac umjesto na cijeli zapis:
INSERT INTO linuxhint_author ( iskaznica , rang autora )VRIJEDNOSTI ( 3 , 2 )
NA DUPLICATU AŽURIRANJA KLJUČA authorRank = VRIJEDNOSTI ( autorRank ) ;
U gornjem kodu, “authorRank” autora s ID-om “3” ažurira se na novu vrijednost “2”:
Ovako funkcionira značajka 'INSERT ON DUPLICATE KEY UPDATE' u MySQL-u.
Zaključak
U MySQL-u, UMETNI NA DUPLIKAT AŽURIRANJA KLJUČA je napredna značajka koja nam omogućuje kombiniranje funkcionalnosti umetanja novog retka i ažuriranja/modificiranja već postojećeg retka u jednoj operaciji. Ova značajka pomaže korisnicima da izbjegnu pogrešku 'kršenja dupliciranog ključa' kada pokušavaju umetnuti novi redak u određenu tablicu. Ovaj post je objasnio što je 'INSERT ON DUPLICATE KEY UPDATE' i kako radi u MySQL-u.