2016-11-20 64 views
2

我需要一个脚本来检查数据库中是否存在列,如果不是,则创建缺少的列。 下面的代码是否符合我的要求?用于创建列的Mysql脚本

 
IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = ‘management’ AND COLUMN_NAME = ‘lastname’) 
BEGIN 
    ALTER TABLE TEST ADD lastname VARCHAR 
END 

回答

0

请注意,INFORMATION_SCHEMA在5.0之前的MySQL中不受支持。 5.0之前的存储过程也不支持,所以如果你需要支持MySQL 4.1,这个解决方案并不好。

IF NOT EXISTS(SELECT NULL 
       FROM INFORMATION_SCHEMA.COLUMNS 
       WHERE table_name = 'management' 
       AND table_schema = 'db_name' 
       AND column_name = 'lastname') THEN 

     ALTER TABLE `management ` ADD `lastname ` VARCHAR(255) NOT NULL; 

END IF; 

另一种解决方案是只尝试

ALTER TABLE ADD lastname VARCHAR(255) NOT NULL; 

。如果列已经存在,它应该抛出一个错误。

错误1060(42S21):重复的列名'lastname' 捕获错误并忽略它在升级脚本中。