MySQL Inserisci Ignora chiave duplicata

Mysql Insert Ignore Duplicate Key



Ci sono spesso dati in conflitto nelle tabelle o negli insiemi di risultati. Inoltre, la correzione richiede molto tempo e spesso è necessario evitare record ripetuti. È necessario identificare i record duplicati ed eliminarli da entrambe le tabelle. Questa sezione spiegherà come evitare che i dati duplicati appaiano all'interno di una tabella e come eliminare i record duplicati correnti. In questa guida imparerai come utilizzare la clausola INSERT IGNORE per evitare l'errore.

Sintassi:

Ecco la sintassi per la query INSERT IGNORE.







>>INSERISCI IGNORE IN nome_tabella(col1, col2, col3)VALORI(value_list),(value_list),(value_list);

INSERISCI IGNORA tramite Workbench:

Apri il tuo MySQL Workbench 8.0 dal tuo sistema e collegalo all'istanza del database.





Nell'area dei comandi, devi creare una tabella Impiegato con quattro colonne in cui una di esse deve essere specificata come UNICA. Prova la query seguente nell'area delle query del navigatore per creare questa tabella. Seleziona l'intera query e fai clic sul segno flash per eseguirla.





>>CREA TABELLA Dipendente(ID int PRIMARY KEY NOT NULL, Nome varchar(cinquanta)NOT NULL, Età Varchar(cinquanta), Stipendio varchar(cinquanta), UNICO(ID));

Al momento della creazione, è possibile trovare l'impiegato della tabella nell'elenco sotto l'opzione Tabelle sotto i dati del database.



Nella visualizzazione griglia è possibile inserire i record senza digitare alcuna query. Quindi, apri la visualizzazione griglia del dipendente della tabella e aggiungi alcuni record come mostrato di seguito. Abbiamo inserito tutti i record univoci senza duplicati. Premi il pulsante 'Applica' per applicare le modifiche.

Verrà aperta una nuova finestra con le query pertinenti relative ai record che abbiamo inserito sopra. Questa schermata può essere chiamata schermata di revisione. Se vuoi cambiare qualcosa, puoi farlo qui. Altrimenti, premi il pulsante Applica per eseguire le query.

Come puoi vedere, la query è stata eseguita con successo e i record vengono salvati nel database e nella sua tabella Employee. Avrebbe generato un errore se avessimo aggiunto un valore duplicato nell'ID della colonna. Tocca il pulsante Fine.

Tutto questo riguardava la visualizzazione a griglia. Ora inseriremo i record tramite l'area delle query. Nel frattempo, questa volta abbiamo inserito record duplicati per controllare l'output. Quindi, abbiamo provato la seguente query INSERT, dove abbiamo due elenchi di valori. Entrambi gli elenchi di valori hanno lo stesso valore nella colonna 'ID'. Seleziona la query e premi il segno flash per eseguire la query.

La query non funzionerà correttamente e genererà un errore a causa dei valori duplicati nel comando INSERT come visualizzato nell'immagine.

Ora prova la stessa query sopra con la clausola INSERT IGNORE ed eseguila come presentato.

Puoi vedere che non genera un errore nell'area di output, ma dà un avviso che il comando contiene valori duplicati.

Aggiorna la visualizzazione griglia della tabella Impiegato. La query INSERT IGNORE ha funzionato a metà. Ha inserito il primo elenco di valori nella tabella, ma il secondo elenco di valori è stato ignorato a causa del valore ripetuto 13.

INSERISCI IGNORE tramite la shell della riga di comando:

Per comprendere questo concetto, apriamo la shell del client da riga di comando MySQL nel tuo sistema. Su richiesta, digita la tua password MySQL per iniziare a lavorarci.

Ora è il momento di creare una tabella. Prova il comando seguente per farlo. Abbiamo creato una tabella denominata 'minister' mentre una delle sue colonne ha un vincolo UNICO. È chiaro che l'ID della colonna accetterà solo i valori univoci e non i valori duplicati.

>>CREA TABELLA data.minister(Mid INT PRIMARY KEY UNIQUE NOT NULL, Nome VARCHAR(Quattro cinque), Città VARCHAR(Quattro cinque));

La query funziona in modo appropriato e la tabella è stata creata. Per comprendere la clausola INSERT IGNORE, devi prima vedere il funzionamento del semplice comando INSERT. Se stai utilizzando il comando INSERT per inserire diversi dati informativi in ​​una tabella, MySQL sospende la transazione e genera un'eccezione se si verifica un errore durante l'elaborazione. Di conseguenza, alla tabella non sono state aggiunte righe. Inseriamo il primo record nella tabella minister utilizzando la query mostrata di seguito. La query funzionerà correttamente perché la tabella è attualmente vuota e non c'è alcun record con cui fare la controparte.

Poiché l'ID della colonna è UNICO, quando proviamo le istruzioni seguenti sulla shell della riga di comando, genererà un errore. Questo perché abbiamo aggiunto il valore 11 nella query precedente e, a causa della chiave UNIQUE, non ci consente di aggiungere nuovamente il valore ripetuto.

Quindi, controllando la tabella, possiamo vedere che la tabella ha solo 1 record aggiunto dalla prima query INSERT.

>>SELEZIONARE*DA data.minister;

Al contrario, se stai utilizzando la clausola INSERT IGNORE, le righe di dati errate che attivano l'errore verranno ignorate e verranno inserite solo quelle corrette. Nel comando seguente, abbiamo utilizzato il comando INSERT IGNORE per evitare di aggiungere valori ripetuti nella tabella e trascurare l'errore. Come puoi vedere, il primo elenco di valori ha un valore duplicato 11 uguale a quello della query precedente. Sebbene il secondo elenco di valori sia univoco, mostrerà 1 record inserito nella tabella, che è il secondo elenco di valori. MySQL indica anche che è stato inserito solo 1 record e nel messaggio viene generato 1 avviso. Puoi quindi presumere che se stiamo usando la clausola INSERT IGNORE, MySQL fornisce un avviso.

Come puoi vedere dall'output seguente, abbiamo solo due record in questa tabella: il primo elenco di valori fornito nella query precedente, che viene trascurato.

>>SELEZIONARE*DA data.minister;

Conclusione:

Abbiamo eseguito tutti gli esempi necessari di INSERT IGNORE su valori duplicati tramite MySQL Workbench e la shell del client da riga di comando MySQL.