MySQL变动表结构
1.批量修改该库中的字段
DROP PROCEDURE IF EXISTS updateColumn;
CREATE PROCEDURE updateColumn(in db_name varchar(100),in cul_name varchar(100),in default_value varchar(100),in remark varchar(100))
BEGIN
DECLARE flag INT DEFAULT 0;
DECLARE tname VARCHAR(50);
DECLARE dt VARCHAR(20);
DECLARE result CURSOR FOR SELECT distinct TABLE_NAME,COLUMN_TYPE FROM INFORMATION_SCHEMA.Columns WHERE TABLE_SCHEMA = db_name AND COLUMN_NAME = cul_name;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET flag = 1;
OPEN result;
WHILE flag <> 1 DO
FETCH result INTO tname,dt;
SET @execSql = CONCAT('alter table ', tname, ' MODIFY column ',cul_name,' ',dt,' default ',default_value);
if remark!='' THEN
SET @execSql=CONCAT(@execSql,' COMMENT ','''',remark,'''');
END if;
PREPARE stmt FROM @execSql;
EXECUTE stmt;
END WHILE;
END;
CALL updateColumn('goods','create_time','CURRENT_TIMESTAMP','创建时间');
CALL updateColumn('goods','modify_time','CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP','更新时间');
CALL updateColumn('goods','is_delete',0,'');
2.修改单个表单字段
DROP PROCEDURE IF EXISTS upSingleTableDefault;
CREATE PROCEDURE upSingleTableDefault(in db_name varchar(100),in t_name varchar(100),in cul_name varchar(100),in default_value varchar(100),in remark varchar(100))
BEGIN
DECLARE dt varchar(10);
SELECT distinct column_type FROM INFORMATION_SCHEMA.Columns WHERE TABLE_SCHEMA = CONCAT('',db_name,'')
AND TABLE_NAME= CONCAT('',t_name,'') AND COLUMN_NAME = CONCAT('',cul_name,'') INTO dt;
SET @execSql = CONCAT('alter table ', t_name, ' MODIFY column ',cul_name,' ',dt,' default ',default_value);
if remark!='' THEN
SET @execSql=CONCAT(@execSql,' COMMENT ','''',remark,'''');
END if;
PREPARE stmt FROM @execSql;
EXECUTE stmt;
END;
CALL upSingleTableDefault('goods','ent_behavior_log','state',0,'');
CALL upSingleTableDefault('goods','ent_oauth_client_details','state',0,'');
CALL upSingleTableDefault('goods','t_cmp_account_bind','state',1,'');