Ko MySQL dara INSERT ON DUPLICATE KEY UPDATE?

Ko Mysql Dara Insert On Duplicate Key Update



Strādājot ar MySQL datu bāzi, lietotāji dažkārt var saskarties ar dublētu atslēgas pārkāpuma kļūdu, mēģinot tabulā ievietot jaunu ierakstu. Šī kļūda rodas, ja rinda ar tādu pašu primāro atslēgu vai unikālo atslēgu jau pastāv. Tomēr šo problēmu var atrisināt, atjauninot esošos ierakstus ar jaunajām vērtībām. Šādos gadījumos, iespējojot “ IEVIETOT DUBLIKĀTAS ATSLĒGAS ATJAUNINĀJUMU ” funkcija efektīvi atrisinās šo problēmu.

Šajā rakstā tiks parādīts, kas ir “IEVIETOT DUBLĒTAJĀ ATSLĒGAS ATJAUNINĀJUMĀ” un kā tas darbojas MySQL.







Ko MySQL dara INSERT ON DUPLICATE KEY UPDATE?

Programmā MySQL, IEVIETOT DUBLIKĀTAS ATSLĒGAS ATJAUNINĀJUMU ir INSERT paziņojuma uzlabota funkcija, kas apvieno divas funkcijas vienā operācijā. Piemēram, tas ievieto ierakstu noteiktā tabulā, ja dotais ieraksts vēl nepastāv. Tomēr, ja vēlamais ieraksts jau pastāv, tas atjauninās esošo ierakstu ar jauno vērtību.



Lai iespējotu funkciju INSERT ON DUPLICATE KEY UPDATE, lietotājiem ir jāievēro tālāk norādītā sintakse:



INSERT INTO [ tabulas_nosaukums ] ( [ sleja_1 ] , [ sleja_2 ] ,... )
VĒRTĪBAS ( [ val_1 ] , [ val_2 ] ,... )
PAR DUBLĒTAS ATSLĒGAS ATJAUNINĀJUMU [ sleja_1 ] = [ val_1 ] , [ sleja_2 ] = [ val_2 ] ,...;





Norādiet tabulas nosaukumu, kolonnu nosaukumus un jūsu izvēlētās vērtības tabulas_nosaukums, col_1, col_2, … un val_1, val_2, … utt. vietā.

Piemērs: Kā lietot MySQL funkciju INSERT ON DUPLICATE KEY UPDATE?



Vispirms izveidojiet savienojumu ar MySQL datu bāzi ar atbilstošām privilēģijām un pēc tam izpildiet tālāk norādīto komandu, lai iegūtu tabulas “linuxhint_author” datus:

ATLASĪT * NO linuxhint_author;

Komanda Select izgūst visus tabulas “linuxhint_author” ierakstus:

Tagad palaidiet šo SQL komandu, lai ievietotu vai atjauninātu konkrētu ierakstu tabulā “linuxhint_author”, ar iespējotu funkciju “ON DUPLICATE KEY UPDATE”:

INSERT INTO linuxhint_author ( id , vārds, vecums, autorsRank, e-pasts )
VĒRTĪBAS ( 6 , 'Alekss Džonsons' , 29 , 3 , 'alex@example.com' )
PAR DUBLĒTAS ATSLĒGAS ATJAUNINĀJUMU
nosaukums = VĒRTĪBAS ( nosaukums ) ,
vecums = VĒRTĪBAS ( vecums ) ,
authorRank = VĒRTĪBAS ( AuthorRank ) ,
e-pasts = VĒRTĪBAS ( e-pasts ) ;

Tā kā norādītais ieraksts tabulā “linuxhint_author” vēl nepastāv, tas tiks veiksmīgi ievietots atlasītajā tabulā:

Ievietosim ieraksta dublikātu un redzēsim, kā PAR DUBLĒTAS ATSLĒGAS ATJAUNINĀJUMU ” funkciju darbs MySQL:

INSERT INTO linuxhint_author ( id , vārds, vecums, autorsRank, e-pasts )
VĒRTĪBAS ( 3 , 'Maikls Džonsons' , 28 , 4 , 'maikls@example.com' )
PAR DUBLĒTAS ATSLĒGAS ATJAUNINĀJUMU
nosaukums = VĒRTĪBAS ( nosaukums ) ,
vecums = VĒRTĪBAS ( vecums ) ,
authorRank = VĒRTĪBAS ( autorRanks ) ,
e-pasts = VĒRTĪBAS ( e-pasts ) ;

No tālāk esošā fragmenta var skaidri redzēt, ka jau esošais ieraksts ir veiksmīgi atjaunināts ar jaunajām vērtībām:

Funkciju “INSERT ON DUPLICATE KEY” var lietot arī konkrētai kolonnai, nevis visam ierakstam:

INSERT INTO linuxhint_author ( id , authorRank )
VĒRTĪBAS ( 3 , 2 )
UZ DUBLIKĀTU ATSLĒGAS ATJAUNINĀJUMU authorRank = VĒRTĪBAS ( autorRanks ) ;

Iepriekš minētajā kodā autora ar ID “3” “authorRank” tiek atjaunināts uz jaunu vērtību “2”:

Šādi MySQL darbojas funkcija “INSERT ON DUPLICATE KEY UPDATE”.

Secinājums

Programmā MySQL, IEVIETOT DUBLIKĀTAS ATSLĒGAS ATJAUNINĀJUMU ir uzlabota funkcija, kas ļauj mums vienā darbībā apvienot jaunas rindas ievietošanas un jau esošās rindas atjaunināšanas/modifikācijas funkcionalitāti. Šī funkcija palīdz lietotājiem izvairīties no kļūdas “dublēta atslēgas pārkāpums”, mēģinot ievietot jaunu rindu noteiktā tabulā. Šajā ziņojumā ir paskaidrots, kas ir “IEVADĪT DUBLĒTAS ATSLĒGAS ATJAUNINĀJUMU” un kā tas darbojas MySQL.