我需要一个脚本来检查数据库中是否存在列,如果没有,则创建缺少的列。 代码是否完全符合我的要求?
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 :(得分: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' 在升级脚本中捕获错误并忽略它。