一套代码,多家部署时,在SQL脚本升级时,通过一个SQL文件给运维,避免出现SQL执行序顺出错及漏执行SQL
SQL Server 项目中 SQL 脚本更新方式
Oracle 项目中 SQL 脚本更新方式
MySQL 项目中 SQL 脚本更新、升级方式,防止多次重复执行
MySQL 中不像 Oracle或 MSSQL 可以直接在脚本中进行 if 判断,所以可以通过添加存储过程的方式,来解决这个问题
如:MySQL 创建存储过程注意项
#通过存储过程添加字段,如果字段存在就不添加。执行后将存储过程删除DELIMITER //
CREATE PROCEDURE mes.ADD_USER_REAL_NAME()
BEGIN
IF NOT EXISTS (SELECT * FROM information_schema.COLUMNS WHERE
table_schema = 'test'
AND table_name = 'sys_user'
AND column_name = 'REAL_NAME')
THEN
ALTER TABLE `sys_user` ADD COLUMN `REAL_NAME` VARCHAR(20) NULL COMMENT '真实姓名' AFTER `LoginName`;
END IF;
END;
//
CALL ADD_USER_REAL_NAME;
DROP PROCEDURE ADD_USER_REAL_NAME; # 若记录已经存在,则忽略本次操作,返回影响行为0,否则执行插入操作,返回影响行为1INSERT IGNORE INTO sys_user(id,loginName)VALUE(123,456)# 若记录已经存在,则删除老的记录,插入此新的记录,否则直接插入REPLACE INTO sys_user(id,loginName)VALUE(123,789)
相关链接
发表评论