我有一个数据库,其中包含一个版本表,其中存储了一个值,即数据库版本号。
我希望能够使用编号脚本自动更新数据库版本。
如果数据库是"6“版本,并且我有不一致的批注编号,如下所示:
001.sql, 02.sql, 3.sql, 4script.sql, 5.sql, 6.upgrade.sql, 7.sql, 8.data.sql, 009.updated.sql什么是只运行大于版本号的脚本并按顺序执行此操作的最佳方法?
我应该使用SQL脚本还是创建bash脚本?
我有点困在如何处理这件事上,所以任何建议或建议都会很感激.
发布于 2018-08-06 05:16:32
创建“主脚本”,该脚本检测当前的DB版本,并且只运行适合它的脚本。例如,它可以看起来像
drop procedure if exists main_proc;
delimiter @@;
create procedure main_proc
select version into @version from service_table;
if @version < 2 then
source 001.sql;
update service_table set version = 2;
end if;
if @version < 2.5 then
source 02.sql;
update service_table set version = 2.5;
end if;
if @version < 3 then
source 3.sql;
update service_table set version = 3;
end if;
-- and so on
end;
@@;
delimiter ;
call main_proc;
drop procedure main_proc;不要忘记错误处理程序(没有脚本文件或访问错误、脚本执行过程中的错误等等)。
https://dba.stackexchange.com/questions/214087
复制相似问题