我想向mysql表中添加新列,但是如果该列已存在,我想忽略该列的添加
我目前正在使用
ALTER IGNORE TABLE `db`.`tablename` ADD COLUMN `column_name` text NULL;
但这抛出了一个错误,说: "ERROR 1060 (42S21): Duplicate column name 'column_name'"
"ERROR 1060 (42S21): Duplicate column name 'column_name'"
即使我正在使用IGNORE,这也无法正常工作
我希望它使用普通的SQL语句而不是存储过程来工作
根据文档:
IGNORE是标准SQL的MySQL扩展。如果新表中的唯一键上有重复项,或者在启用严格模式时发生警告,则它控制ALTER TABLE的工作方式。如果未指定IGNORE,则在发生重复键错误的情况下,副本将中止并回滚。如果指定了IGNORE,则只有一行用于唯一键重复的行。其他冲突的行将被删除。不正确的值将被截断为最接近的匹配可接受值。
也就是说,它用于不同的目的,而不是所有的错误。您想要的是类似的东西ALTER TABLE ADD IF NOT EXISTS,并且该语法不存在。
ALTER TABLE ADD IF NOT EXISTS
在存储过程中,您可以使用一条if语句查看该列是否已经存在(使用INFORMATION_SCHEMA.COLUMNS)。
if
INFORMATION_SCHEMA.COLUMNS
这是一个显示相同问题的SQL Fiddle。