一种方法可能是将存储过程与基于数据库的应用程序“设置”结合使用。假设您的应用有一个用于存储应用设置的 appSetting 表。
create table appSetting (
name varchar(63) not null primary key,
value varchar(255)
) ;
-- insert into appSetting values ('environment','dev');
然后,仅当 appSetting 在运行演变时设置“环境”的值为“开发”时,以下几行的内容才会创建一个 tmpLog 表(或将一个值插入表 1):
# --- !Ups
create procedure doEvolution31()
begin
declare environment varchar(31);;
select value
into environment
from appSetting
where name='environment'
;;
if (environment='dev') then
create table tmpLog (id int not null primary key, text varchar(255));;
-- or INSERT INTO table1 (id, provider_name, provider_country, provider_code, status, flag) VALUES (10, 'XXXXX', 'XX', 'XXXXX', '1', '0');
end if;;
end
;
call doEvolution31();
# --- !Downs
drop procedure doEvolution31;
drop table if exists tmpLog;
-- or delete from table2 where id=10;
你没有提到你正在使用哪个数据库。以上是MYSQL语法。可能有一种方法可以将配置值放入存储的过程中,也许是通过一些 sbt 魔术,但我认为如果我们有这样的要求,我们会使用上面的方法。(顺便说一句,双分号用于转义单个分号,以便在创建过程时不执行过程的各个语句。)