Ovaj će post raspravljati o umetanju novog retka samo ako podaci već ne postoje u MySQL tablici. Prije nego počnete s ovim postom, provjerite jeste li prijavljeni na svoj MySQL lokalni poslužitelj i jeste li odabrali bazu podataka u kojoj želite raditi.
Umetnite novi redak samo ako podaci ne postoje koristeći naredbu 'INSERT IGNORE'.
Pa, odgovor na pitanje iz naslova je prilično jednostavan i jasan. Jednostavno koristite ' UMETNUTI ' ključna riječ zajedno s ' ZANEMARITI ” Ključna riječ. Ovo će osigurati da se novi podaci ili upit za umetanje izvršavaju samo ako u MySQL-u nije pronađen prethodni unos podataka. Da biste dobili kratak pregled ovoga, pogledajte sljedeću sintaksu:
UMETNUTI ZANEMARITI U [ stol - Ime ] ( [ stupac1 - Ime ] , [ stupac2 - Ime ] , [ stupac3 - Ime ] ) VRIJEDNOSTI ( [ vrijednost1 ] , [ vrijednost2 ] , [ vrijednost3 ] ) ;
Pogledajmo primjer ako korisnik želi unijeti vrijednost retka ' 1 ”, “ Ivan ' i ' Srna ' u ' Kupac ” tablica za stupce ” Iskaznica ,” “ Ime ' i ' Prezime ” odnosno. Pokrenite ovaj upit za umetanje ovih vrijednosti ako ih ima ako već ne postoji red s ovim vrijednostima:
IZABERI * IZ Kupac;
UMETNUTI ZANEMARITI U Kupac ( Iskaznica , Ime , Prezime ) VRIJEDNOSTI ( 1 , 'Ivan' , 'srna' ) ;
Izlaz sadrži dvije tablice koje prikazuju podatke tablice prije i nakon izvršenja upita. Možete primijetiti da se ništa ne mijenja u tablici jer je red već postojao pa je MySQL uspješno zanemario proces umetanja bez prikaza pogreške:
Umetnite novi red samo ako podaci ne postoje koristeći klauzulu 'WHERE NOT EXISTS'
U MySQL, ' GDJE NE POSTOJI ' klauzula sprječava umetanje redaka ako već postoje u tablici kada se koristi u ' UMETNUTI U ” izjava s podupitom za definiranje uvjeta. Kada se ova klauzula koristi s podupitom ' (SELECT * FROM [naziv-tablice] [naziv-stupca]=[izraz]); ” provjerava da li u tablici postoji red koji ispunjava uvjet. Ako red postoji, ' GDJE NE POSTOJI ' klauzula će vratiti lažnu vrijednost, a ' IZABERI ” naredba neće vratiti nijedan redak. Kao rezultat toga, red neće biti umetnut u tablicu. Sintaksa je navedena u nastavku:
UMETNUTI U [ stol - Ime ] ( [ stupac1 - Ime ] , [ stupac2 - Ime ] , [ stupac3 - Ime ] )IZABERI [ vrijednost1 ] , [ vrijednost2 ] , [ vrijednost3 ]
GDJE NE POSTOJI ( IZABERI * IZ [ stol - Ime ] [ stupac - Ime ] = [ izraz ] ) ;
Pogledajmo primjer ako korisnik želi umetnuti redak u tablici zaposlenika koji sadrži vrijednosti ' 1 ”, “ američki ' i ' Henriot ” u stupcima “ iskaznica ”, “ Naziv tvrtke ' i ' Ime kontakta ” odnosno. Ali samo ako je redak s ID-om ' 1 ” nije pronađen u tablici ili ne postoji. U tom konkretnom slučaju, upit će biti:
IZABERI * IZ zaposlenik;
UMETNUTI U zaposlenik ( iskaznica , Naziv tvrtke , Ime kontakta )
IZABERI 1 , 'Američki' , 'Henriot'
GDJE NE POSTOJI ( IZABERI * IZ zaposlenik GDJE iskaznica = 1 ) ;
Izlaz prikazuje novi redak koji nije umetnut kao redak s ' iskaznica ' jednak ' 1 ” već postojao.
Umetnite novi redak samo ako podaci ne postoje koristeći klauzulu 'ON DUPLICATE KEY UPDATE'
Pa, drugi način je korištenje ' PRI AŽURIRANJU DUPLIKATA KLJUČA ” u MySQL. Budući da će se ova klauzula koristiti s upitom 'INSERT INTO' formirajući 'if-else' izvršenje. To znači da će se podaci unutar tablice ažurirati samo ako su jedinstveni. U protivnom ne bi došlo do promjene. Opća sintaksa za ovo je sljedeća:
UMETNUTI U [ stol - Ime ] ( [ stupac1 - Ime ] , [ stupac2 - Ime ] , [ stupac3 - Ime ] ) VRIJEDNOSTI ( [ vrijednost1 ] , [ vrijednost2 ] , [ vrijednost3 ] )NA DUPLIKAT KLJUČ AŽURIRAJ [ stupac1 - Ime ] = [ stupac1 - Ime ] ;
Pogledajmo primjer za umetanje vrijednosti u ' 2 ”, “ Pascale ”, “ Nixon ”, “ London ”, “ UK ” i “(171) 555-7788 ' u stolu ' Kupac ” za stupce “ Iskaznica ”, “ Ime ”, “ Prezime ”, “ Grad ”, “ zemlja ' i ' telefon ” odnosno. Ako red već ne postoji, bit će umetnut. U suprotnom, ažurirat će vrijednosti gdje je ' Id=Id ” uvjet ispunjava. Pokrenite ovaj upit:
IZABERI * IZ Kupac ;UMETNUTI U Kupac ( Iskaznica , Ime , Prezime , Grad , zemlja , telefon )
VRIJEDNOSTI ( 2 , 'Pascale' , 'Nixon' , 'London' , 'UK' , '(171) 555-7788' )
NA DUPLIKAT KLJUČ AŽURIRAJ Iskaznica = Iskaznica;
Ovo je tablica prije pokretanja upita, možete vidjeti ' Iskaznica ' jednak ' 2 ' ne postoji:
Nakon pokretanja upita, ovaj će upit umetnuti nove retke u tablicu:
Uspješno ste umetnuli novi redak jer podaci ne postoje prije pokretanja upita.
Zaključak
U MySQL umetnite novi redak samo ako podaci već ne postoje pomoću ' INSERT ZANEMIRI ” izjava ili “ GDJE NE POSTOJI ' klauzula u ' UMETNUTI U ” izjava. Drugi način da to učinite je korištenje ' PRI AŽURIRANJU DUPLIKATA KLJUČA ' klauzula u ' UMETNUTI U ” za ažuriranje ako redak već postoji. U suprotnom, dodajte novi red. Post je raspravljao o tome kako umetnuti novi red samo ako podaci ne postoje.