我想在mysql表中添加一个新列,但是如果该列已经存在,我想忽略添加列
我目前正在使用
ALTER IGNORE TABLE `db`.`tablename` ADD COLUMN `column_name` text NULL;
但这会引发错误:"ERROR 1060 (42S21): Duplicate column name 'column_name'"
即使我正在使用IGNORE,这也无效
我希望这可以使用普通的SQL语句而不是存储过程
答案 0 :(得分:3)
IGNORE是标准SQL的MySQL扩展。它控制ALTER的方式 如果新表中的唯一键上有重复项,则表可用 如果启用严格模式时发生警告。如果不是IGNORE 如果指定,则复制将被中止并在重复键错误时回滚 发生。如果指定了IGNORE,则只使用行的一行 复制一个唯一的密钥。其他冲突的行将被删除。 不正确的值被截断为最接近的匹配可接受 值。
也就是说,它用于不同的目的,而不是所有错误。你想要的是ALTER TABLE ADD IF NOT EXISTS
之类的东西,而且这种语法不存在。
在存储过程中,您可以使用if
语句查看列是否已存在(使用INFORMATION_SCHEMA.COLUMNS
)。
Here是一个表示同样问题的SQL小提琴。