帮我看下,这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;
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;
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;
select if(@temp <=> 10000 ,(insert data values(0,'aaa','bbbb','2010-10-10','')),'版本错误') ;
语法问题,如果你要动态执行,用
prepare+execute
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;
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,'不需要更新','需要更新');
建议楼主不要使用偷懒使用这么多全局变量,很容易出问题。写个存储过程,把逻辑表达清楚,这样也看得舒服点
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()取到。