Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment éviter d'insérer des enregistrements en double dans MySQL

Parfois, vous devrez peut-être empêcher l'insertion en double lors de l'ajout de lignes à la table MySQL. Vous pouvez facilement le faire en utilisant l'instruction INSERT IGNORE. Dans cet article, nous verrons comment éviter d'insérer des enregistrements en double dans MySQL.


Comment éviter d'insérer des enregistrements en double dans MySQL

Voici les étapes pour éviter d'insérer des enregistrements en double dans MySQL. Il y a deux parties à garder à l'esprit. Tout d'abord, vous devez créer un index de colonne UNIQUE pour votre table. Ensuite, vous devez insérer des données en utilisant INSERT IGNORE pour éviter les enregistrements en double.

Disons que vous avez le tableau suivant ventes(id, date_commande, montant)

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


1. Créer un index unique

Nous ajoutons un index UNIQUE pour id colonne à l'aide de l'instruction ALTER TABLE.

Voici la syntaxe pour créer un index UNIQUE dans MySQL.

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

Voici la requête SQL pour ajouter l'index UNIQUE à id colonne dans ventes tableau.

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


2. Insérer des données à l'aide de INSERT IGNORE

Ensuite, nous allons insérer des données en utilisant INSERT IGNORE.

Avant de continuer, regardons ce qu'est INSERT IGNORE dans MySQL et comment fonctionne INSERT IGNORE.


Qu'est-ce que INSÉRER IGNORER ?

INSERT IGNORE est une commande qui force MySQL à ignorer les erreurs lorsque vous insérez des données dans une table MySQL.


Comment fonctionne INSÉRER IGNORER ?

Dans notre cas, nous avons déjà créé un index UNIQUE pour id colonne. Si nous utilisons l'instruction INSERT pour ajouter des données avec des lignes en double, MySQL génère une erreur et arrête l'exécution de la requête après la première ligne en double.

Au lieu de cela, lorsque nous utilisons INSERT IGNORE, MySQL rejettera silencieusement l'insertion d'une ligne en double sans générer d'erreur et poursuivra l'exécution de la requête.

Ainsi, si un enregistrement ne contient pas de données en double, MySQL l'insérera comme d'habitude. S'il s'agit d'un enregistrement en double, MySQL l'ignorera simplement.

Voici la requête SQL pour insérer des données sans doublons dans ventes tableau.

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 |
+------+------------+--------+

Comme vous pouvez le constater, MySQL évite d'insérer des lignes en double, sans générer d'erreur.

Besoin d'un outil de reporting pour MySQL ? Ubiq facilite la visualisation des données en quelques minutes et la surveillance dans des tableaux de bord en temps réel. Essayez-le aujourd'hui !