MySQL 项目中 SQL 脚本更新、升级方式,防止多次重复执行

一套代码,多家部署时,在SQL脚本升级时,通过一个SQL文件给运维,避免出现SQL执行序顺出错及漏执行SQL

SQL Server 项目中 SQL 脚本更新方式

Oracle 项目中 SQL 脚本更新方式

MySQL 项目中 SQL 脚本更新、升级方式,防止多次重复执行

MySQL 中不像 Oracle或 MSSQL 可以直接在脚本中进行 if 判断,所以可以通过添加存储过程的方式,来解决这个问题

如:MySQL 创建存储过程注意项

#通过存储过程添加字段,如果字段存在就不添加。执行后将存储过程删除
DELIMITER // CREATE PROCEDURE thoth_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,否则执行插入操作,返回影响行为1
INSERT IGNORE INTO sys_user(id,loginName)VALUE(123,456)
# 若记录已经存在,则删除老的记录,插入此新的记录,否则直接插入
REPLACE INTO sys_user(id,loginName)VALUE(123,789)