IF构造在MySql中产生错误#1064

时间:2008-10-20 02:01:01

标签: mysql

我试图在phpMyAdmin中运行以下代码:

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

我也尝试了这个没有分隔符语句和相应的go。我收到错误消息“#1064 - 您的SQL语法中有错误;请查看与您的MySQL服务器版本对应的手册,以便在@tagTokenNum为null后使用正确的语法,然后插入到tag_token ......”< / p>

据我所知,我在MySql中遵循IF语句的正确语法。我对Microsoft SQL更熟悉,所以我完全有可能做错了。我很感激您提供的任何帮助。谢谢。 - 戴夫

1 个答案:

答案 0 :(得分:2)

ISTR你只能在存储过程中使用if语句,参考:mysql docs ...An IF ... END IF block, like all other flow-control blocks used within stored programs...

但是我认为您可以通过以下方式实现相同目标:

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'