|
Publicité | ||||||||||||||||||||||
|
|
#1 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2008 Messages : 50 ![]() |
Bonjour à tous,
Comme l'intitulé l'indique, je suis à la recherche d'une requête SQL me permettant d'insérer une ligne dans une table sous réserve de certaines conditions, ou plus exactement une condition. Je m'explique au travers d'un exemple. Soit la table 'test' suivante : Code :
Je souhaite pouvoir insérer dans cette table une nouvelle ligne si et seulement si le champ 'text' que je souhaite insérer n'existe pas déjà ! exemple : Code :
INSERT INTO test (id,text,num) VALUES (NULL,"toto",20) WHERE NOT EXISTS (SELECT id FROM test WHERE text = 'toto'); |
||
|
|
00
|
|
|
#2 |
|
Membre du Club
![]() Inscription : mars 2010 Messages : 51 ![]() |
Tu mets déjà une contrainte d'unicité sur le champs text.
Ensuite tu fais des INSERT IGNORE INTO Et ils échouront si la clause d'unicité préalablement posée les en empêchent |
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2008 Messages : 50 ![]() |
La table est déjà existante et je ne peux pas modifier sa structure !!
|
|
|
00
|
|
|
#4 | ||
|
Membre actif
![]() Inscription : juillet 2007 Messages : 135 ![]() |
essaie ceci
Code :
|
||
|
|
00
|
|
|
#5 |
|
Membre du Club
![]() Inscription : mars 2010 Messages : 51 ![]() |
On peut ajouter une contrainte d'unicité sur un table existante, ce n'est pas un problème.
De toute façon, tu veux une unicité sur le champs "text", donc tu lui mets une contrainte UNIQUE, c'est tout ... Une autre solution serait du bidouillage :s |
|
|
00
|
|
|
#6 | |
![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 778 ![]() |
Citation:
La contrainte d'unicité peut être une alternative, ou alors c'est au code applicatif qui crée l'insertion de vérifier si la valeur existe déjà, mais en SQL direct, avec toutes les contraintes que tu donnes, tu ne peux pas. ced
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
|
|
|
00
|
|
|
#7 | ||||
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2008 Messages : 50 ![]() |
Bon alors finalement j'essaye quelque chose de ce style :
Code :
Code :
Merci ! |
||||
|
|
00
|
|
|
#8 |
![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 778 ![]() |
Ça, c'est un élément nouveau ?
Plutôt que de galérer avec un trigger, pourquoi ne pas insérer le contenu du fichier dans une table temporaire et ensuite faire l'insertion via un INSERT... SELECT... sur cette table temporaire en éliminant, par jointure externe dans la partie SELECT, les données déjà présentes ? Ça fait un peu moins "massue pour écraser une mouche", non ? ced
__________________
Rédacteur / Modérateur SGBD Mes tutoriels et la FAQ MySQL ---------------------------------------------------- Pensez aux balises code et au tag Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com