MySQL INSERT IGNORE
Lorsque vous utilisez l’instruction INSERT pour ajouter plusieurs lignes à une table et si une erreur se produit pendant le traitement, MySQL met fin à l’instruction et renvoie une erreur. En conséquence, aucune ligne n’est insérée dans la table.
Pourtant, si vous utilisez l’instruction INSERT IGNORE, les lignes contenant des données non valides à l’origine de l’erreur sont ignorées et les lignes contenant des données valides sont insérées dans la table.
Exemple en utilisant l’instruction INSERT IGNORE
Nous allons créer une nouvelle table appelée « Contact » pour la démonstration.
CREATE TABLE Contact ( id INT PRIMARY KEY AUTO_INCREMENT, num_tel VARCHAR(50) NOT NULL UNIQUE );
La contrainte UNIQUE garantit qu’aucun numéro de téléphone en double n’existe dans la colonne num_tel.
L’instruction suivante insère une nouvelle ligne dans la table « Contact »:
INSERT INTO Contact(num_tel) VALUES('0725480036');
Cela fonctionne comme prévu.
Exécutons maintenant une autre instruction qui insère deux lignes dans la table « Contact »:
INSERT INTO Contact(num_tel) VALUES('0725480036'), ('0788903471');
Cela retourne une erreur.
Comme indiqué dans le message d’erreur, le numéro de téléphone 0725480036 viole la contrainte UNIQUE. Donc le deuxième numéro n’est pas inséré dans la table « Contact ».
Si vous utilisez plutôt l’instruction INSERT IGNORE, le deuxième numéro sera inséré dans la table « Contact ».
INSERT IGNORE INTO Contact(num_tel) VALUES('0725480036'), ('0788903471');
Pour vérifier si le deuxième numéro est inséré dans la table « Contact », nous exécutions la requête suivante:
En conclusion, lorsque vous utilisez l’instruction INSERT IGNORE au lieu d’émettre une erreur, MySQL émet un avertissement en cas d’erreur.