2008-10-20 14 views
1

Je tente d'exécuter le code suivant dans phpMyAdmin:IF construction en MySql produisant erreur # 1064

set @tagTokenNum=0; 
select @tagTokenNum:=tag_token_id from tag_token where tag_token_name = 'XXX'; 
delimiter go 
if @tagTokenNum is null then 
    insert into tag_token (tag_token_name) values ('XXX'); 
    select @tagTokenNum:=last_insert_id(); 
end if; 
go 

J'ai aussi essayé sans l'instruction delimiter et aller correspondant. Je reçois le message d'erreur "# 1064 - Vous avez une erreur dans votre syntaxe SQL, consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser" si @tagTokenNum est null puis insérez dans tag_token ... "

Pour autant que je sache, je suis la syntaxe correcte pour les instructions IF dans MySQL. Je suis beaucoup plus familier avec Microsoft SQL, donc il est tout à fait possible que je fasse quelque chose de mal. J'apprécierais toute aide que vous pouvez offrir. Merci. - Dave

Répondre

2

Si vous ne pouvez utiliser que des instructions if dans des procédures stockées, ref: mysql docs ...An IF ... END IF block, like all other flow-control blocks used within stored programs....

Cependant, je pense que vous pouvez obtenir le même avec les éléments suivants:

insert into tag_token (tag_token_name) values ('XXX') 
    ON DUPLICATE KEY UPDATE tag_token_name = tag_token_name; 

select @tagTokenNum:=tag_token_id from tag_token where tag_token_name = 'XXX' 
+0

Je n'ai pas vérifié la solution de contournement, mais il est certainement juste sur les instructions IF ... – davearchie

Questions connexes