Rechercher : dans
Par :

Mysql: INSERT IF NOT EXISTS

Dernière réponse le 23 aoû 2008 à 12:36:09 developper55, le 24 jan 2008 à 15:53:49 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Internet Explorer 7.0

Meilleures réponses pour « mysql: INSERT IF NOT EXISTS » dans :
MySQL - Supprimer des doublons dans une table VoirPour supprimer des doublons au niveau d'une table donnée définie comme suit : CREATE TABLE IF NOT EXISTS TabTest ( cle_prim integer(4) NOT NULL auto_increment, x integer, y integer, z integer, ...
ORA-00942 : table or view does not exist VoirCause : La table ou vue entrée n’existe pas, ou un synonyme non autorisé a été utilisé, ou un nom de vue a été utilisé à la place d’un nom de table. Action : Vérifier le nom de la vue ou table utilisées qu’un nom de vue n’est utilisé à la...
[PHP] Les ressemblances à ne pas confondre VoirIntroduction Concaténation ou paramètres ? Guillemets/Apostrophe Structure require/include isset vs empty htmlentities ou htmlspecialchars ? Nombre de signes égal Introduction Cette astuce présente plusieurs fonction ou astuces en...
SQL - Opérations ensemblistes VoirLes opérations ensemblistes Les opérations ensemblistes en SQL, sont celles définies dans l'algèbre relationnelle. Elles sont réalisées grâce aux opérateurs : UNION INTERSECT (ne fait pas partie de la norme SQL et n'est donc pas implémenté dans...

1

kilian, le 24 jan 2008 à 15:57:14

Salut,

Mysql ne supporte les requêtes imbriquées qu'à partir de la version 4.1.
Quant au NOT EXISTS je ne sais pas depuis quand il est supporté.

Répondre à kilian

2

developper55, le 24 jan 2008 à 16:06:08
  • +1

Est la solution ?
je lance deux requêtes, une pour tester , une pour injecter

Répondre à developper55

7

Azraelinou, le 30 jun 2008 à 21:51:16

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

Répondre à Azraelinou

3

kilian, le 24 jan 2008 à 16:09:46

Ben je comprends pas ce que tu veux faire avec WHERE NOT EXISTS

Répondre à kilian

4

developper55, le 24 jan 2008 à 16:14:17

JE VEUX tester si les deux valeurs que je dois insérer, n'existe pas dèja dans la table

Répondre à developper55

5

kilian, le 24 jan 2008 à 18:09:44

Oui alors fait d'abord un select pour vérifier ça.

Répondre à kilian

6

developper55, le 30 jan 2008 à 12:42:30

Ok merci,
jé terminé par plusieurs étapes
Merci

Répondre à developper55

8

vignemail1, le 30 jun 2008 à 22:34:14

Tu met un index sur les deux colonnes qui doivent être unique et donc cela donnera une insertion possible uniquement si les champs n'ont pas déjà ces valeurs ensemble.

De plus, NOT EXISTS, moi je connais pas, mais NOT IN oui par contre
Membre contributeur
Spécialisé réseaux, webmastering, programmation

Répondre à vignemail1

9

Azraelinou, le 30 jun 2008 à 22:56:38
  • +2

NOT IN est juste plus gourmand en resources.

Mais consomme moins de place en code donc plus lisible.

Répondre à Azraelinou

10

 developper55, le 23 aoû 2008 à 12:36:09

Merci

Répondre à developper55