繁体   English   中英

如果不存在,请使用SQL语句忽略表添加列

[英]Alter ignore table add column if not exists using the SQL statement

我想在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小提琴。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM