帮我看下,这MYSQL语法为什么错了。
      start transaction;
      set @version = 70000;
      set @temp = (select  version from data where id=1 );
      select @temp;
      set @datasql1=(insert data values(0,'aaa','bbbb','2010-10-10','')) ;
      select @datasql1;
      select if(@version <=> @temp,' 不需要更新','需要更新') ;
                select  if(@temp <=> 10000 ,(insert data values(0,'aaa','bbbb','2010-10-10','')),'版本错误') ;
      commit;

解决方案 »

  1.   


    start transaction;
    set @version = 70000;
    set @temp = (select version from data where id=1 );
    select @temp;
    set @datasql1=(insert data values(0,'aaa','bbbb','2010-10-10','')) ;
    select @datasql1;
    select if(@version <=> @temp,' 不需要更新','需要更新') ;
    select if(@temp <=> 10000 ,(insert data values(0,'aaa','bbbb','2010-10-10','')),'版本错误') ;
    commit;
      

  2.   

    set @datasql1=(insert data values(0,'aaa','bbbb','2010-10-10','')) ;
    select if(@temp <=> 10000 ,(insert data values(0,'aaa','bbbb','2010-10-10','')),'版本错误') ;
    语法问题,如果你要动态执行,用
    prepare+execute
      

  3.   

    set @datasql1=(insert data values(0,'aaa','bbbb','2010-10-10','')) ;这是啥?动态语句么?
      

  4.   

    MYSQL,定义局部变量用
    DECLARE 变量 类型 DEFAULT 默认值;就行,如
    DECLARE m_parm INT DEFAULT 0;
    DECLARE m_version INT DEFAULT 70000;
    DECLARE l_version INT DEFAULT 0;
    SELECT `version` INTO l_version FROM `data` WHERE id=1;
    IF m_version=l_version THEN
       INSERT `data` VALUES(0,'aaa','bbbb','2010-10-10','');
    END IF;
      

  5.   

    set @version=70000;
    set @temp = (select version from data where id=1 );
    insert data values(0,'aaa','bbbb','2010-10-10','') where @temp=10000;
    select if(@version=@temp,'不需要更新','需要更新');
    建议楼主不要使用偷懒使用这么多全局变量,很容易出问题。写个存储过程,把逻辑表达清楚,这样也看得舒服点
      

  6.   

    set @datasql1=(insert data values(0,'aaa','bbbb','2010-10-10','')) ; 这句应该有问题。你可以这样写:
    insert data values(0,'aaa','bbbb','2010-10-10','');
    set @datasql1=row_count(); 这句也有错误,select if(@temp <=> 10000 ,(insert data values(0,'aaa','bbbb','2010-10-10','')),'版本错误') ;,同上修改。解释:insert返回值不会自动传递给变量,而是在系统变量里,你可以row_count()取到。