MySQL Insert Ignore Duplicate Key

Mysql Insert Ignore Duplicate Key



V tabelah ali nizih rezultatov so pogosto nasprotujoči si podatki. Popravljanje je tudi dolgotrajno, izogibati pa se je treba pogosto ponavljajočim se zapisom. Identificiranje podvojenih zapisov in njihovo brisanje iz katere koli tabele je potrebno. Ta razdelek bo podrobno opisal, kako se izogniti pojavljanju podvojenih podatkov v tabeli in kako odpraviti trenutne podvojene zapise. V tem priročniku se boste naučili uporabljati klavzulo INSERT IGNORE, da se izognete napaki.

Sintaksa:

Tu je sintaksa poizvedbe INSERT IGNORE.







>>INSERT IGNORE INTO ime_tabele(col1, col2, col3)VREDNOTE(value_list),(value_list),(value_list);

VSTAVITE IGNORE prek delovne mize:

Odprite MySQL Workbench 8.0 iz sistema in ga povežite s primerkom baze podatkov.





V območju ukazov morate ustvariti tabelo Employee s štirimi stolpci, pri čemer mora biti eden od njih podan kot UNIQUE. Če želite ustvariti to tabelo, poskusite spodnjo poizvedbo v območju poizvedb navigatorja. Izberite celotno poizvedbo in kliknite znak flash, da jo izvedete.





>>Ustvari tabelo Zaposleni(ID int PRIMARNI KLJUČ NIČ, Ime varchar(petdeset)NOT NULL, Starost Varchar(petdeset), Plača varchar(petdeset), JEDINSTVENO(ID));

Ob ustvarjanju lahko najdete zaposlenega v tabeli na seznamu pod možnostjo Tabele pod podatki zbirke podatkov.



V pogledu mreže lahko vnesete zapise brez vnašanja poizvedbe. Zato odprite mrežni pogled zaposlenega v tabeli in vanj dodajte nekaj zapisov, kot je prikazano spodaj. Vnesli smo vse edinstvene zapise brez dvojnikov. Za uveljavitev sprememb pritisnite gumb »Uporabi«.

Odprlo se bo novo okno z ustreznimi poizvedbami, povezanimi z zgoraj vpisanimi zapisi. Ta zaslon se lahko imenuje zaslon za pregled. Če želite nekaj spremeniti, lahko to storite tukaj. V nasprotnem primeru pritisnite gumb Uporabi, da izvedete poizvedbe.

Kot lahko vidite, je bila poizvedba uspešno izvedena in zapisi so shranjeni v bazi podatkov in njeni tabeli Employee. Če bi v ID stolpca dodali podvojeno vrednost, bi nastala napaka. Dotaknite se gumba Dokončaj.

To je vse o pogledu na mrežo. Zdaj bomo v polje za poizvedbe vstavljali zapise. Medtem smo tokrat vstavili podvojene zapise za preverjanje izpisa. Tako smo poskusili s spodnjo poizvedbo INSERT, kjer imamo dva seznama vrednosti. Oba seznama vrednosti imata v stolpcu „ID“ isto vrednost. Izberite poizvedbo in pritisnite tipko flash, da izvedete poizvedbo.

Poizvedba ne bo delovala pravilno in bo povzročila napako zaradi podvojenih vrednosti v ukazu INSERT, prikazanih na sliki.

Zdaj poskusite isto zgornjo poizvedbo s klavzulo INSERT IGNORE in jo izvedite, kot je predstavljeno.

Vidite lahko, da ne povzroča napake v izhodnem območju, vendar opozori, da ukaz vsebuje podvojene vrednosti.

Osvežite pogled mreže tabele Employee. Poizvedba INSERT IGNORE je delovala polovično. V tabelo je vstavil prvi seznam vrednosti, drugi seznam vrednosti pa je bil prezrt zaradi ponavljajoče se vrednosti 13.

VSTAVITE IGNORE prek lupine ukazne vrstice:

Če želite razumeti ta koncept, odprite odjemalce ukazne vrstice MySQL v vašem sistemu. Na vprašanje vnesite geslo za MySQL, da začnete delati na njem.

Zdaj je čas za izdelavo tabele. Za to poskusite spodnji ukaz. Ustvarili smo tabelo z imenom 'minister', medtem ko ima eden od njenih stolpcev omejitev UNIQUE. Jasno je, da bo ID stolpca sprejel samo edinstvene vrednosti in ne podvojenih vrednosti.

>>CREATE TABLE data.minister(V sredini INT PRIMARNI KLJUČ, JEDINSTVEN NI NULL, Ime VARCHAR(Štiri, pet), Mesto VARCHAR(Štiri, pet));

Poizvedba deluje ustrezno in tabela je ustvarjena. Če želite razumeti klavzulo INSERT IGNORE, morate najprej videti, kako deluje preprost ukaz INSERT. Če uporabljate ukaz INSERT za vstavljanje več podatkovnih podatkov v tabelo, MySQL prekine transakcijo in ustvari izjemo, če se med obdelavo zgodi napaka. Posledično tabeli ni dodanih nobenih vrstic. V spodnji prikaz poizvedbe vstavimo prvi zapis v ministrsko tabelo. Poizvedba bo uspešno delovala, ker je tabela trenutno prazna in ni nobenega zapisa za primerjavo.

Ker je ID stolpca UNIQUE, bo pri lupini ukazne vrstice spodnji ukaz ustvaril napako. To je zato, ker smo v prejšnji poizvedbi dodali vrednost 11, zaradi ključa UNIQUE pa nam ne dovoljuje, da bi znova dodali ponovljeno vrednost.

Tako lahko pri preverjanju tabele vidimo, da ima tabela samo 1 zapis, ki ga je dodala prva poizvedba INSERT.

>>IZBERI*FROM data.minister;

Nasprotno, če uporabljate klavzulo INSERT IGNORE, bodo napačne podatkovne vrstice, ki sprožijo napako, spregledane in bodo vnesle samo natančne. V spodnjem ukazu smo uporabili ukaz INSERT IGNORE, da bi se izognili dodajanju ponavljajočih se vrednosti v tabelo in spregledali napako. Kot lahko vidite, ima prvi seznam vrednosti podvojeno vrednost 11, enako kot v prejšnji poizvedbi. Medtem ko je drugi seznam vrednosti edinstven, bo v tabeli prikazal 1 zapis, ki je drugi seznam vrednosti. MySQL tudi označuje, da je bil vstavljen samo 1 zapis, v sporočilu pa je ustvarjeno 1 opozorilo. Potem lahko domnevate, da če uporabljamo klavzulo INSERT IGNORE, MySQL poda opozorilo.

Kot lahko vidite iz spodnjega izhoda, imamo v tej tabeli samo dva zapisa - prvi seznam vrednosti iz zgornje poizvedbe, ki je spregledan.

>>IZBERI*FROM data.minister;

Zaključek:

Naredili smo vse potrebne primere INSERT IGNORE za podvojene vrednosti prek MySQL Workbench in odjemalca ukazne vrstice MySQL.