小编典典

使用SQL语句更改忽略表添加列(如果不存在)

sql

我想向mysql表中添加新列,但是如果该列已存在,我想忽略该列的添加

我目前正在使用

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

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

即使我正在使用IGNORE,这也无法正常工作

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


阅读 412

收藏
2021-04-22

共1个答案

小编典典

根据文档

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

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

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

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

2021-04-22