代码之家  ›  专栏  ›  技术社区  ›  davearchie

MySql中的IF构造产生错误#1064[关闭]

  •  1
  • davearchie  · 技术社区  · 17 年前

    我正在尝试在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_令牌中…”

    据我所知,我在MySql中遵循IF语句的正确语法。我对Microsoft SQL更为熟悉,因此完全有可能我做错了什么。如果你能提供帮助,我将不胜感激。谢谢 -戴夫

    1 回复  |  直到 13 年前
        1
  •  2
  •   Richard Harrison    17 年前

    在存储过程中只能使用if语句的ISTR,参考: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'