Mysql脚本创建一个列

时间:2016-11-20 18:13:30

标签: php 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

1 个答案:

答案 0 :(得分:0)

请注意,5.0之前的MySQL不支持INFORMATION_SCHEMA。在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;

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

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