一套代码,多家部署时,在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)

 

相关链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。