我有一个有4个列的表:ID,类型,所有者,描述。 ID是AUTO_INCREMENT PRIMARY KEY,现在我想要:
ALTER IGNORE TABLE `my_table`
ADD UNIQUE (`type`, `owner`);
当然,我有一些类型为'Apple'且所有者为'Apple CO'的记录。所以我的问题是,在进行ALTER TABLE操作后,哪条记录将成为特殊的记录,是具有最小ID的记录还是最近插入的具有最大ID的记录?
我有一个有4个列的表:ID,类型,所有者,描述。 ID是AUTO_INCREMENT PRIMARY KEY,现在我想要:
ALTER IGNORE TABLE `my_table`
ADD UNIQUE (`type`, `owner`);
当然,我有一些类型为'Apple'且所有者为'Apple CO'的记录。所以我的问题是,在进行ALTER TABLE操作后,哪条记录将成为特殊的记录,是具有最小ID的记录还是最近插入的具有最大ID的记录?
只保留第一条记录,其余删除。具体可参见§§:
IGNORE
是MySQL扩展的标准SQL,用于控制ALTER TABLE在新表中存在重复唯一键或启用严格模式时出现警告时的操作方式。如果未指定IGNORE
,则如果出现重复键错误,拷贝操作将中止并回滚。如果指定了IGNORE
,则仅使用具有唯一键上副本的第一行。其他冲突行将被删除。不正确的值将截断为最接近的匹配可接受值。
这里的“first”意味着具有最小ID的那个,假设ID是主键。
此外,请注意:
自MySQL 5.7.4起,
ALTER TABLE
的IGNORE
子句已被删除,使用它会产生一个错误。