Mysql
 sql >> Database >  >> RDS >> Mysql

Come evitare di inserire record duplicati in MySQL

A volte potrebbe essere necessario impedire l'inserimento duplicato durante l'aggiunta di righe alla tabella MySQL. Puoi farlo facilmente usando l'istruzione INSERT IGNORE. In questo articolo, vedremo come evitare di inserire record duplicati in MySQL.


Come evitare di inserire record duplicati in MySQL

Ecco i passaggi per evitare di inserire record duplicati in MySQL. Ci sono due parti da tenere a mente. Innanzitutto, devi creare un indice di colonna UNICO per la tua tabella. Successivamente, è necessario inserire i dati utilizzando INSERT IGNORE per evitare record duplicati.

Supponiamo che tu abbia la seguente tabella vendite(id, data_ordine, importo)

mysql> create table sales(
          id int, 
          order_date date, 
          amount int
          );


1. Crea un indice unico

Aggiungiamo un indice UNICO per id colonna utilizzando l'istruzione ALTER TABLE.

Ecco la sintassi per creare un indice UNICO in MySQL.

alter table table_name ADD UNIQUE INDEX(
        column_name1, 
        column_name2,
        ...
        column_nameN
        );

Ecco la query SQL per aggiungere l'indice UNIQUE a id colonna in vendite tabella.

mysql> alter table sales ADD UNIQUE INDEX(id);


2. Inserisci i dati usando INSERT IGNORE

Successivamente, inseriremo i dati utilizzando INSERT IGNORE.

Prima di procedere, diamo un'occhiata a cosa è INSERT IGNORE in MySQL e come funziona INSERT IGNORE.


Cos'è INSERT IGNORE?

INSERT IGNORE è un comando che obbliga MySQL a ignorare gli errori quando inserisci dati in una tabella MySQL.


Come funziona INSERT IGNORE?

Nel nostro caso, abbiamo già creato un indice UNICO per id colonna. Se utilizziamo l'istruzione INSERT per aggiungere dati con righe duplicate, MySQL genererà un errore e interromperà l'esecuzione della query dopo la prima riga duplicata.

Invece, quando utilizziamo INSERT IGNORE, MySQL scarterà silenziosamente l'inserimento di una riga duplicata senza generare un errore e continuerà l'esecuzione della query.

Quindi, se un record non contiene dati duplicati, MySQL lo inserirà come al solito. Se si tratta di un record duplicato, MySQL lo ignorerà semplicemente.

Ecco la query SQL per inserire dati senza duplicati nelle vendite tabella.

mysql> mysql> insert ignore into sales(id,order_date,amount)
     values(1, '2021-01-01', 250),
     (1, '2021-01-01', 250),
     (2, '2021-01-02', 200),
     (3, '2021-01-03', 150),
     (2, '2021-01-02', 200);
Query OK, 3 rows affected (0.10 sec)
Records: 5  Duplicates: 2  Warnings: 0

mysql> select * from sales;
+------+------------+--------+
| id   | order_date | amount |
+------+------------+--------+
|    1 | 2021-01-01 |    250 |
|    2 | 2021-01-02 |    200 |
|    3 | 2021-01-03 |    150 |
+------+------------+--------+

Come puoi vedere, MySQL evita di inserire righe duplicate, senza generare alcun errore.

Hai bisogno di uno strumento di reporting per MySQL? Ubiq semplifica la visualizzazione dei dati in pochi minuti e il monitoraggio in dashboard in tempo reale. Provalo oggi!