Vložiť MySQL Ignorovať duplicitný kľúč

Mysql Insert Ignore Duplicate Key



V tabuľkách alebo súboroch výsledkov sú často protichodné údaje. Oprava je tiež časovo náročná a často sa treba vyhnúť opakovaným záznamom. Je potrebné identifikovať duplicitné záznamy a odstrániť ich z ktorejkoľvek tabuľky. Táto časť sa bude zaoberať tým, ako zabrániť zobrazovaniu duplicitných údajov v tabuľke a ako odstrániť aktuálne duplicitné záznamy. V tejto príručke sa naučíte používať klauzulu INSERT IGNORE, aby ste sa vyhli chybe.

Syntax:

Tu je syntax pre dotaz INSERT IGNORE.







>>INSERT IGNORE INTO table_name(col1, col2, col3)HODNOTY(value_list),(value_list),(value_list);

VLOŽTE IGNOROVANIE cez Workbench:

Otvorte MySQL Workbench 8.0 zo svojho systému a pripojte ho k inštancii databázy.





V oblasti príkazov musíte vytvoriť tabuľku Zamestnanec so štyrmi stĺpcami, kde jeden z nich musí byť zadaný ako JEDINEČNÝ. Túto tabuľku vytvorte pomocou nižšie uvedeného dotazu v oblasti dotazov navigátora. Vyberte celý dotaz a vykonajte ho kliknutím na znamienko Flash.





>>VYTVORIŤ TABUĽKU Zamestnanec(ID int PRIMÁRNY KĽÚČ NIE JE NULLÝ, Názov varchar(päťdesiat)NOT NULL, Age Varchar(päťdesiat), Plat varchar(päťdesiat), JEDINEČNÉ(ID));

Po vytvorení nájdete zamestnanca tabuľky v zozname pod možnosťou Tabuľky pod údajmi databázy.



V mriežkovom zobrazení môžete zadávať záznamy bez zadávania akéhokoľvek dotazu. Otvorte teda mriežkový prehľad zamestnancov tabuľky a pridajte do neho niekoľko záznamov, ako je uvedené nižšie. Zadali sme všetky jedinečné záznamy bez duplikátov. Zmeny použijete kliknutím na tlačidlo „Použiť“.

Otvorí sa nové okno s príslušnými dopytmi týkajúcimi sa záznamov, ktoré sme zadali vyššie. Túto obrazovku je možné nazvať obrazovkou Kontrola. Ak chcete niečo zmeniť, môžete to urobiť tu. V opačnom prípade spustite dotazy stlačením tlačidla Použiť.

Ako vidíte, dotaz bol úspešne vykonaný a záznamy sú uložené do databázy a jej tabuľky Zamestnanec. Ak by sme do ID stĺpca pridali akúkoľvek duplicitnú hodnotu, vygenerovalo by to chybu. Klepnite na tlačidlo Dokončiť.

Všetko to bolo o zobrazení mriežky. Teraz budeme vkladať záznamy cez oblasť dotazov. Medzitým sme tentoraz vkladali duplicitné záznamy, aby sme skontrolovali výstup. Skúsili sme teda nižšie uvedený dotaz INSERT, kde máme dva zoznamy hodnôt. Oba zoznamy hodnôt majú v stĺpci „ID“ rovnakú hodnotu. Vyberte dotaz a spustite ho kliknutím na znak Flash.

Dotaz nebude správne fungovať a vygeneruje chybu kvôli duplicitným hodnotám v príkaze INSERT, ako sú zobrazené na obrázku.

Teraz vyskúšajte rovnaký vyššie uvedený dotaz s klauzulou INSERT IGNORE a vykonajte ho tak, ako je uvedené.

Môžete vidieť, že vo výstupnej oblasti nevygeneruje chybu, ale varuje, že príkaz obsahuje duplicitné hodnoty.

Obnovte zobrazenie mriežky v tabuľke Zamestnanec. Dopyt INSERT IGNORE fungoval na polovicu. Vložil prvý zoznam hodnôt do tabuľky, ale druhý zoznam hodnôt bol ignorovaný z dôvodu opakovanej hodnoty 13.

VLOŽTE IGNOROVANIE cez príkazový riadok:

Aby sme porozumeli tomuto konceptu, otvorme vo vašom systéme shell klienta príkazového riadka MySQL. Na požiadanie zadajte svoje heslo do MySQL a začnite na ňom pracovať.

Teraz je načase vytvoriť tabuľku. Skúste to urobiť pomocou nižšie uvedeného príkazu. Vytvorili sme tabuľku s názvom „minister“, pričom jeden z jej stĺpcov má JEDINEČNÉ obmedzenie. Je zrejmé, že ID stĺpca bude akceptovať iba jedinečné hodnoty, a nie duplicitné hodnoty.

>>VYTVORIŤ TABUĽKU data.minister(Stredný VNÚTORNÝ ZÁKLADNÝ KĽÚČ JEDINEČNÝ NIE JE NULNÝ, názov VARCHAR(Štyria, piati), Mesto VARCHAR(Štyria, piati));

Dotaz funguje správne a tabuľka bola vytvorená. Aby ste pochopili klauzulu INSERT IGNORE, musíte sa najskôr pozrieť na to, ako funguje jednoduchý príkaz INSERT. Ak na vloženie niekoľkých informačných údajov do tabuľky použijete príkaz INSERT, MySQL transakciu pozastaví a vygeneruje výnimku, ak sa počas spracovania vyskytne chyba. V dôsledku toho k tabuľke nie sú pridané žiadne riadky. Vložme prvý záznam do služby Minister tabuľky pomocou nižšie uvedeného dotazu. Dotaz bude úspešne fungovať, pretože tabuľka je v súčasnosti prázdna a neexistuje žiadny záznam, ktorý by bolo možné porovnať.

Pretože ID stĺpca je JEDINEČNÉ, keď vyskúšame nižšie uvedené pokyny v shelle príkazového riadka, vygeneruje to chybu. Dôvodom je, že sme do predchádzajúceho dotazu pridali hodnotu 11 a vzhľadom na kľúč UNIQUE nám to neumožňuje znova pridať opakovanú hodnotu.

Preto pri kontrole tabuľky vidíme, že tabuľka má iba 1 záznam pridaný prvým dotazom INSERT.

>>VYBERTE*Z údajov.minister;

Naopak, ak používate klauzulu INSERT IGNORE, nesprávne riadky údajov, ktoré spôsobujú chybu, budú prehliadnuté a zadajú sa iba tie správne. V nižšie uvedenom príkaze sme použili príkaz INSERT IGNORE, aby sme sa vyhli pridávaniu opakovaných hodnôt do tabuľky a prehliadali chybu. Ako vidíte, prvý zoznam hodnôt má duplicitnú hodnotu 11 rovnakú ako v predchádzajúcom dopyte. Druhý zoznam hodnôt je jedinečný, ale zobrazí 1 záznam vložený do tabuľky, čo je druhý zoznam hodnôt. MySQL tiež naznačuje, že bol vložený iba 1 záznam a do správy je vygenerované 1 varovanie. Potom môžete predpokladať, že ak používame klauzulu INSERT IGNORE, MySQL poskytuje varovanie.

Ako vidíte z nižšie uvedeného výstupu, v tejto tabuľke máme iba dva záznamy - prvý zoznam hodnôt poskytnutých vo vyššie uvedenom dopyte, ktorý sa prehliada.

>>VYBERTE*Z údajov.minister;

Záver:

Urobili sme všetky potrebné príklady INSERT IGNORE na duplicitné hodnoty prostredníctvom MySQL Workbench a klientskeho shellu príkazového riadka MySQL.