MySQL:ALTER IGNORE TABLE ADD UNIQUE,什么会被截断?

kub*_*uba 30 mysql alter-table unique-key

我有一个包含4列的表:ID,类型,所有者,描述.ID是AUTO_INCREMENT PRIMARY KEY,现在我想:

ALTER IGNORE TABLE `my_table`
    ADD UNIQUE (`type`, `owner`);
Run Code Online (Sandbox Code Playgroud)

当然,我有几个类型='Apple'和owner ='Apple CO'的记录.所以我的问题是哪个记录将成为ALTER TABLE之后留下的特殊记录,一个ID最小的记录,或者最新插入的记录?

Gal*_*alz 44

将保留第一条记录,其余记录将删除§§:

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

我猜这里'第一'意味着ID最小的那个,假设ID是主键.

另请注意:

如MySQL的5.7.4中,IGNORE对于子句ALTER TABLE去除和它的使用产生一个错误.