web-dev-qa-db-fra.com

Insérer uniquement dans le tableau si l'article n'existe pas

Ma base de données a une table appelée fruit:

Tableau fruit

+-------------+
| id | name   |
+ ----------- +
| 1  | Apple  |
| 2  | orange |
| 3  | banana |
| 4  | grape  |
+-------------+

id est la clé primaire. Je veux ajouter des entrées à la table, mais seulement si elles n'existent pas déjà.

La requête

IF NOT EXISTS (SELECT name FROM fruit WHERE name = 'mango')
INSERT INTO fruit (name) 
VALUES ('mango')

Erreur

J'utilise une application d'interface graphique SQL appelée Sequel Pro, et cette requête génère des erreurs avec les éléments suivants:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF NOT EXISTS (SELECT name FROM fruit WHERE name = 'mango') INSERT INTO frui' at line 1

Peut-être

Il se peut que quelque chose de louche se passe. La requête peut s'arrêter à INSERT INTO frui. Un problème avec l'application? Ou ma requête est-elle fausse?

23
izolate

Il faudrait utiliser

ALTER TABLE fruit ADD UNIQUE (name) 

puis utiliser

INSERT IGNORE INTO fruit (name) VALUES ('mango')
52
ShiningLight