我想向 mysql 表添加一个新列,但如果该列已存在,我想忽略该列的添加
我目前正在使用
ALTER IGNORE TABLE `db`.`tablename` ADD COLUMN `column_name` text NULL;
但这会引发错误:"ERROR 1060 (42S21): Duplicate column name 'column_name'"
即使我使用的是 IGNORE,这也不起作用
我希望它可以使用普通的 SQL 语句而不是存储过程来工作
根据文档 http://dev.mysql.com/doc/refman/5.7/en/alter-table.html:
IGNORE 是标准 SQL 的 MySQL 扩展。它控制如何更改
如果新表中的唯一键有重复项,则 TABLE 有效,或者
如果启用严格模式时出现警告。如果 IGNORE 不是
指定,如果出现重复键错误,则复制将中止并回滚
发生。如果指定了 IGNORE,则仅使用其中一行
在唯一键上重复。其他冲突的行将被删除。
不正确的值将被截断为可接受的最接近匹配
价值。
也就是说,它用于不同的目的,而不是所有错误。你想要的是类似的东西ALTER TABLE ADD IF NOT EXISTS
,并且该语法不存在。
在存储过程中,您可以使用if
语句来查看该列是否已经存在(使用INFORMATION_SCHEMA.COLUMNS
).
Here http://www.sqlfiddle.com/#!2/1e82f是一个显示相同问题的 SQL Fiddle。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)