数据库表添加新字段(支持重复执行)

Posted kiko2014551511

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库表添加新字段(支持重复执行)相关的知识,希望对你有一定的参考价值。

Oracle

DECLARE 
    COLEXIST NUMBER;   
BEGIN 
   SELECT COUNT(1) INTO COLEXIST FROM USER_TAB_COLUMNS WHERE TABLE_NAME=UPPER(HISTORY) AND COLUMN_NAME=UPPER(NAME);--判断列是否存在
   IF COLEXIST = 0  THEN  --如果不存在,进行创建
      EXECUTE IMMEDIATE  
              ALTER TABLE HISTORY ADD NAME VARCHAR(64) DEFAULT (‘‘ ‘‘) NOT NULL;
    END IF ;   
END;
/  

 

mysql

DELIMITER ;;
DROP PROCEDURE IF EXISTS COLUMNADD; 
CREATE DEFINER=`root`@`%` PROCEDURE `COLUMNADD`(TBNAME VARCHAR(30),COLNAME VARCHAR(32),COLTYPE VARCHAR(64))
BEGIN
DECLARE  P_STR VARCHAR(300);
IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME = TBNAME AND COLUMN_NAME =COLNAME) THEN  -- 判断列是否存在
   SET P_STR= CONCAT(ALTER TABLE ,TBNAME, ADD ,COLNAME , ,COLTYPE); 
   SET @SQL = P_STR;
   PREPARE STMT FROM @SQL;
   EXECUTE STMT;
   DEALLOCATE PREPARE STMT;
END IF; 
END;;
DELIMITER ;

-- 调用该存储过程
CALL COLUMNADD(LF_WCD_P1,WCD_URLP1,VARCHAR(64) NOT NULL DEFAULT ‘‘‘‘‘);

 

以上是关于数据库表添加新字段(支持重复执行)的主要内容,如果未能解决你的问题,请参考以下文章

使用 FireDac 仅更新重复行中的 1 个(无主键或唯一字段)

sqlite如何添加新字段

MYSQL插入数据INSERT INTO时如何检测某字段重复后再决定是不是执行?

mysql在创建表的时候可以创建字段那么创建新数据库的时候可以顺便创建表吗

如何使用对象列表在片段中实现newinstace模式[重复]

SqlAlchemy 将新字段添加到类并在表中创建相应的列