MySQL 程序
其实整个过程是这样的,首先 要创建3个表 有版本号字段
表1version 0.0.1.0
表2version 0.0.2.0
表3version 0.0.3.0 要求对这3个表有升级, 升级到0.0.6.0
要写一段SQL 执行一次 就能对表进行升级,在升级之前检查版本号是否是最新的,如果是最新的就不用升级.否者就升级。
就这个意思。。不过不能用存储过程。一段SQL完成
wwwwa。。有办法么分不够,我另开贴。。
其实整个过程是这样的,首先 要创建3个表 有版本号字段
表1version 0.0.1.0
表2version 0.0.2.0
表3version 0.0.3.0 要求对这3个表有升级, 升级到0.0.6.0
要写一段SQL 执行一次 就能对表进行升级,在升级之前检查版本号是否是最新的,如果是最新的就不用升级.否者就升级。
就这个意思。。不过不能用存储过程。一段SQL完成
wwwwa。。有办法么分不够,我另开贴。。
例如 sql=. .....%$^&*()_ ;
start transaction;
DELIMITER $$
CREATE PROCEDURE up2()
BEGIN
declare version varchar(20) ;
declare temp varchar(20) ;
set version = 70000;
set temp =( select version from data1 where id=1 );
select temp; -- 为什么我多次查询过来的值是70000 但我是数据库里面的确是10000。。为什么?
IF VERSION<> temp THEN
INSERT DATA1 VALUES(0,'aaa','bbbb','2010-10-10',' ');
ELSE
SELECT '不需要更新' ;
END IF;IF VERSION<> temp THEN
INSERT DATA1 VALUES(0,'aaa','bbbb','2010-10-10',' ');
ELSE
SELECT '不需要更新' ;
END IF;
IF VERSION<> temp THEN
update data1 set version=70000 where id=1;
ELSE
SELECT '不需要更新' ;
END IF;
END$$
DELIMITER ;
commit;
drop PROCEDURE up2;
看注释。。HELp
改成
select version into temp from data1 where id=1
set temp =( select version from data1 where id=1 );
set temp =( select version from data1 where id=1 );
select temp; -- 为什么我多次查询过来的值是70000 但我是数据库里面的确是10000。。为什么?
你的变量名和字段名重复了。这样会以变量名为准,也就是set version = 70000;
只能用存储过程才能完成?。 是吗??。
是的。或者用操作系统的脚本。(但很复杂)
。且不能存储过程
不能
select temp; -- 为什么我多次查询过来的值是70000 但我是数据库里面的确是10000。。为什么?有同名字段名,以变量名为准