如果不存在,使用SQL语句“Alter ignore table add column”添加列。

5

我想在MySQL表中添加新列,但如果该列已经存在,我希望忽略添加该列。

我目前正在使用:

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

但是这里出现了错误,错误信息为:"ERROR 1060 (42S21): Duplicate column name 'column_name'"

尽管我使用了IGNORE,但它并没有起作用。

我希望能够使用普通的SQL语句来解决这个问题,而不是使用存储过程。

1个回答

4
根据文档:
IGNORE是MySQL对标准SQL的扩展。如果新表中存在唯一键上的重复项或启用了严格模式时出现警告,则它控制ALTER TABLE的工作方式。如果未指定IGNORE,则在出现重复键错误时,复制将被中止并回滚。如果指定了IGNORE,则仅使用唯一键上有重复的一行。其他冲突的行将被删除。将不正确的值截断为最接近的可接受值。
也就是说,它用于不同的目的,而不是所有错误。您想要的是类似ALTER TABLE ADD IF NOT EXISTS的内容,但这种语法不存在。
在存储过程中,可以使用if语句来查看列是否已经存在(使用INFORMATION_SCHEMA.COLUMNS)。 这里是一个SQL Fiddle,显示相同的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接