mysql存储进程如何判断一个表是否存在_MySql数据库中,判断表、表字段(存储过程)是否存在,不存在就新增...
本文是针对MySql数据库创建的SQL脚本,别搞错咯。判断表是否存在,不存在就可新增CREATE TABLE IF NOT EXISTS `mem_cardtype_resource` (...) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;判断表字段是否存在,不存在就可新增、修改、删除,移除修改列名DROP PROCEDURE IF E
本文是针对MySql数据库创建的SQL脚本,别搞错咯。
判断表是否存在,不存在就可新增
CREATE TABLE IF NOT EXISTS `mem_cardtype_resource` (
...
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
判断表字段是否存在,不存在就可新增、修改、删除,移除修改列名
DROP PROCEDURE IF EXISTS Pro_Temp_ColumnWork;
DELIMITER$$
-- 1表示新增列,2表示修改列类型,3表示删除列
CREATE PROCEDURE Pro_Temp_ColumnWork(TableName VARCHAR(50),ColumnName VARCHAR(50),SqlStr VARCHAR(4000),CType INT)
BEGIN
-- 定义Row1,设置初始值,下一步count(*)赋值给Row1
DECLARE Rows1 INT;
SET Rows1=0;
SELECT COUNT(*) INTO Rows1 FROM INFORMATION_SCHEMA.Columns
WHERE table_schema= DATABASE() AND table_name='TableName' AND column_name='ColumnName';
-- 新增列,下一步Sqlstr赋值
IF (CType=1 AND Rows1<=0) THEN
SET SqlStr := CONCAT( 'ALTER TABLE ',TableName,' ADD COLUMN ',ColumnName,' ',SqlStr);
-- 修改列类型
ELSEIF (CType=2 AND Rows1>0) THEN
SET SqlStr := CONCAT('ALTER TABLE ',TableName,' MODIFY ',ColumnName,' ',SqlStr);
-- 删除列
ELSEIF (CType=3 AND Rows1>0) THEN
SET SqlStr := CONCAT('ALTER TABLE ',TableName,' DROP COLUMN ',ColumnName);
ELSE SET SqlStr :='';
END IF;
-- 执行命令 如果Sqlstr非空,执行sql表达式
IF (SqlStr<>'') THEN
SET @SQL1 = SqlStr;
PREPARE stmt1 FROM @SQL1;
EXECUTE stmt1;
END IF;
END$$
DELIMITER ;
-- 当前数据库 TableName表名 ColumnName列名
-- 新增列
-- CALL Pro_Temp_ColumnWork ('表名','字段名','字段参数 ', 1);
-- CALL Pro_Temp_ColumnWork ('表名','字段名','int(11) NULL DEFAULT NULL AFTER `xxxxxxxxxxx`; ', 1);
-- 删除列
-- CALL Pro_Temp_ColumnWork ('e_handcard_control','EntranceType','', 3);
-- 最后再执行一遍删除存储过程
DROP PROCEDURE IF EXISTS Pro_Temp_ColumnWork;
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)