5

我想在 mysql 表中添加一个新列,但如果列已经存在,我想忽略列的添加

我目前正在使用

ALTER IGNORE TABLE `db`.`tablename` ADD COLUMN `column_name` text NULL;

但这是抛出一个错误说:"ERROR 1060 (42S21): Duplicate column name 'column_name'"

即使我使用的是 IGNORE,这也不起作用

我希望它使用普通的 SQL 语句而不是存储过程来工作

4

1 回答 1

4

根据文档

IGNORE 是标准 SQL 的 MySQL 扩展。如果新表中的唯一键有重复项或启用严格模式时出现警告,它会控制 ALTER TABLE 的工作方式。如果未指定 IGNORE,则如果发生重复键错误,则副本将中止并回滚。如果指定了 IGNORE,则仅使用在唯一键上有重复的行中的一行。其他冲突的行被删除。不正确的值将被截断为最接近的匹配可接受值。

也就是说,它用于不同的目的,而不是所有错误。您想要的是类似的东西ALTER TABLE ADD IF NOT EXISTS,并且该语法不存在。

在存储过程中,您可以使用if语句来查看列是否已存在(使用INFORMATION_SCHEMA.COLUMNS)。

是一个显示相同问题的 SQL Fiddle。

于 2014-03-04T13:21:05.700 回答