Ką „MySQL“ veikia INSERT ON DUBLICATE KEY UPDATE?

Ka Mysql Veikia Insert On Dublicate Key Update



Dirbdami su MySQL duomenų baze, vartotojai, bandydami į lentelę įterpti naują įrašą, kartais gali susidurti su pasikartojančia rakto pažeidimo klaida. Ši klaida įvyksta, kai jau yra eilutė su tuo pačiu pirminiu raktu arba unikaliu raktu. Tačiau šią problemą galima išspręsti atnaujinus esamus įrašus naujomis reikšmėmis. Tokiais atvejais įjungus „ ĮTRAUKTI DUKLIOJANTĮ RAKTŲ NAUJINĮ “ funkcija efektyviai išspręs šią problemą.

Šis įrašas parodys, kas yra „ĮTERKITE DUBLIKAS RAKTŲ ATNAUJINĮ“ ir kaip tai veikia „MySQL“.







Ką „MySQL“ veikia INSERT ON DUBLICATE KEY UPDATE?

„MySQL“ sistemoje ĮTRAUKTI DUKLIOJANTĮ RAKTŲ NAUJINĮ yra išplėstinė INSERT teiginio funkcija, kuri sujungia dvi funkcijas į vieną operaciją. Pavyzdžiui, jis įterpia įrašą į konkrečią lentelę, jei nurodyto įrašo dar nėra. Tačiau jei norimas įrašas jau yra, jis atnaujins esamą įrašą nauja verte.



Norėdami įjungti funkciją INSERT ON DUPLICATE KEY UPDATE, vartotojai turi vadovautis toliau pateikta sintaksė:



INSERT INTO [ lentelės_pavadinimas ] ( [ stulpelis_1 ] , [ stulpelis_2 ] ,... )
VERTYBĖS ( [ val_1 ] , [ val_2 ] ,... )
DĖL DUBLIKATO RAKTŲ ATNAUJINIMO [ stulpelis_1 ] = [ val_1 ] , [ stulpelis_2 ] = [ val_2 ] ,...;





Nurodykite lentelės pavadinimą, stulpelių pavadinimus ir pasirinktas reikšmes vietoje lentelės_pavadinimas, col_1, col_2, … ir val_1, val_2, … ir tt.

Pavyzdys: Kaip MySQL naudoti INSERT ON DUPLICATE KEY UPDATE funkciją?



Pirmiausia prisijunkite prie MySQL duomenų bazės su atitinkamomis teisėmis, tada vykdykite toliau pateiktą komandą, kad gautumėte „linuxhint_author“ lentelės duomenis:

PASIRINKTI * IŠ linuxhint_author;

Komanda Select nuskaito visus „linuxhint_author“ lentelės įrašus:

Dabar paleiskite šią SQL komandą, kad įterptumėte arba atnaujintumėte konkretų įrašą lentelėje „linuxhint_author“ su įjungta funkcija „ON DUPLICATE KEY UPDATE“:

INSERT INTO linuxhint_author ( id , vardas, pavardė, amžius, autoriusRank, el )
VERTYBĖS ( 6 , 'Aleksas Džonsonas' , 29 , 3 , 'alex@example.com' )
DĖL DUBLIKATO RAKTŲ ATNAUJINIMO
vardas = VERTYBĖS ( vardas ) ,
amžius = VERTYBĖS ( amžiaus ) ,
authorRank = VERTYBĖS ( AuthorRank ) ,
paštas = VERTYBĖS ( paštu ) ;

Kadangi nurodyto įrašo lentelėje 'linuxhint_author' dar nėra, jis bus sėkmingai įterptas į pasirinktą lentelę:

Įterpkime pasikartojantį įrašą ir pažiūrėkime, kaip DĖL DUBLIKATO RAKTŲ ATNAUJINIMO “ funkcijų darbas MySQL:

INSERT INTO linuxhint_author ( id , vardas, pavardė, amžius, autoriusRank, el )
VERTYBĖS ( 3 , 'Michael Johnson' , 28 , 4 , 'michael@example.com' )
DĖL DUBLIKATO RAKTŲ ATNAUJINIMO
vardas = VERTYBĖS ( vardas ) ,
amžius = VERTYBĖS ( amžiaus ) ,
authorRank = VERTĖS ( AuthorRank ) ,
paštas = VERTYBĖS ( paštu ) ;

Iš toliau pateikto fragmento aiškiai matyti, kad jau esamas įrašas sėkmingai atnaujintas naujomis reikšmėmis:

Funkciją „ĮDĖKITE DUBLIKAS RAKTO“ taip pat galima pritaikyti konkrečiam stulpeliui, o ne visam įrašui:

INSERT INTO linuxhint_author ( id , autoriusRank )
VERTYBĖS ( 3 , 2 )
DĖL DUBLIKATO RAKTO ATNAUJINIMO authorRank = VERTĖS ( AuthorRank ) ;

Aukščiau pateiktame kode autoriaus, kurio ID „3“, „authorRank“ atnaujinamas į naują reikšmę „2“:

Taip MySQL veikia funkcija „INSERT ON DUPLICATE KEY UPDATE“.

Išvada

„MySQL“ sistemoje ĮTRAUKTI DUKLIOJANTĮ RAKTŲ NAUJINĮ yra pažangi funkcija, leidžianti sujungti naujos eilutės įterpimo ir jau esamos eilutės atnaujinimo/keitimo funkcijas viena operacija. Ši funkcija padeda vartotojams išvengti „dublikato rakto pažeidimo“ klaidos bandant įterpti naują eilutę į tam tikrą lentelę. Šiame įraše paaiškinta, kas yra „ĮTERKITE DUPLIKATO RAKTŲ ATNAUJINĮ“ ir kaip tai veikia „MySQL“.