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