zoukankan      html  css  js  c++  java
  • MySql数据库中,判断表、表字段是否存在,不存在就新增

    本文是针对MySql数据库创建的SQL脚本,别搞错咯。

    判断表是否存在,不存在就可新增

    CREATE TABLE IF NOT EXISTS `mem_cardtype_resource` (
      ...
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

    判断表字段是否存在,不存在就可新增、修改、删除,移除修改列名

    MySql中没有直接的语法可以在增加列前进行判断该列是否存在,解决方案是写一个存储过程来完成此任务。

    参考:https://blog.csdn.net/huangjin0507/article/details/49330413

    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
    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;
    -- 新增列
    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;
    -- 执行命令
    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;
  • 相关阅读:
    windows mobile licence
    通过acme.sh生成泛域名证书
    枚举值为何为1、2、4、8、16....
    script 解决 跨域访问
    强大的json字符串对象,转化为object对象
    使用maven jetty调试web程序
    web上实现起点到终点的抛物线轨迹运动——补充
    实现2个有序数组的排序
    maven axis2简单部署webservice
    使用javamail发送邮件
  • 原文地址:https://www.cnblogs.com/gilbert/p/10130009.html
Copyright © 2011-2022 走看看