Mysql: INSERT IF NOT EXISTS

Résolu/Fermé
developper55 Messages postés 123 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 30 mai 2012 - 24 janv. 2008 à 15:53
developper55 Messages postés 123 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 30 mai 2012 - 23 août 2008 à 12:36
Bonjour,

J'ai mysql version 2.9.1.1, phpmyadmin, php5
et j'ai besoin d'insérer une lignes de deux valeurs dans une table sachant que ces deux valeurs n'existent pas dans la même ligne,

INSERT INTO `listedemachoix` ( `index_listechoix` , `index_gens` , `index_formule`) VALUES ( NULL ,'17', '19') WHERE NOT EXISTS ( SELECT * FROM listedemachoix WHERE index_gens='17' AND index_formule='19')

ça donne d'erreur au niveau "WHERE NOT EXISTS ",

mais j'ai essayé avec count(*)


tous les idées sont les biens venues
Merci

8 réponses

developper55 Messages postés 123 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 30 mai 2012 9
24 janv. 2008 à 16:06
est la solution ?
je lance deux requêtes, une pour tester , une pour injecter
7
DECLARE @ID INT, @Name VARCHAR(255)

INSERT INTO Table
SELECT I.ID, I.Name
FROM
(
SELECT @ID, @Name
) I
LEFT OUTER JOIN
Table T
ON I.ID = T.ID
WHERE T.ID IS NULL

Cela n'insère que ce qui n'est pas présent dans la Table ciblée, bien entendu on parle là de tables normalisées, avec une PK.
Si tu devais checker d'autres valeurs, il suffirait de les ajouter à la clause ON qui ferait alors tout le boulot pour faire une extraction d'ensembles.
Tu checkes ROW_COUNT() à la sortie, et t'es au top pour savoir si tu dois faire un UPDATE à la place si ROW_COUNT() = 0.

Hope it helps
0