Page 1 sur 1

insert into avec condition

Posté : 19 avr. 2010, 10:53
par XxX
Bonjour, je voudrai faire une insertion conditionnelle.
Si ce que je veux rajouter dans la base est déjà dedans, on ne fait rien. Si il n'y est pas, on l'insère.

Pour information,j'ai une table sequencearn(Id_ARN,Sequence)
Le champs sequence est de type TEXT
J'ai trouvé sur internet différente possibilités
Aucune ne marche. Généralement,c'est une erreur de syntaxe.
Voici ce que j'ai testé :
--------------------------------------------------------------------------------------------------------------------------
IF NOT EXISTS( select Sequence,Id_ARN
from sequencearn
where Sequence  like "AAA"
and Id_ARN="11")

INSERT INTO sequencearn(Sequence,Id_ARN) VALUES ("AAA","11")
--------------------------------------------------------------------------------------------------------------------------
IF (select count(*) from sequencearn where Sequence="AAA")
THEN                             // j'ai essayé avec et sans THEN
INSERT INTO sequencearn( Sequence, Id_Org)
VALUES (
"AAA", "1"
)
--------------------------------------------------------------------------------------------------------------------------
insert into sequencearn(Sequence,Id_Org) VALUES (Sequence,Id_Org)where not exists 
(select Sequence,Id_Org
from sequencearn
where Sequence ="AAA" and Id_Org="1")
Je pense que la solution doit être évidente mais je la vois pas .
Toute aide sera donc la bienvenue :p

Re: insert into avec condition

Posté : 19 avr. 2010, 12:30
par XxX
Bon ben j'ai trouvé un autre moyen plus simple.
Je l'ai fait en deux coups.
Dans le PHP, je fais un SELECT count(*) from sequencearn where Sequence= "AAA"
et puis le insert into se retrouve dans un if .
Si on a retrouvé aucun enregistrement, on procéde a l insertion.


le $s est la séquence récupéré quelque part ailleurs..
----------------------------------------------------------------------------------
$r ="SELECT count(*) FROM sequencearn where Sequence='".$s."'";
		$q = mysql_query($r);	
		$count = mysql_result($q,0,0);
		
		
			if($count == 0) {
	                           $sql ="INSERT INTO sequencearn (taille,Sequence,id_org)
		                   VALUES ('$taille','$s','$id')";
		                   $query2 = mysql_query($sql);
				}

Re: insert into avec condition

Posté : 19 avr. 2010, 12:31
par XxX
Si ca peut aider quelqu un ca marche en tt cas

Re: insert into avec condition

Posté : 19 avr. 2010, 16:10
par ouckileou
C'est une solution courante, merci d'être venu la poster.

Tu peux aussi mettre des contraintes d'unicité sur la table, ce qui lèvera une erreur si tu essaies d'insérer une ligne en doublon.