我有一个包含 4 列的表:ID、类型、所有者、描述。 ID 是 AUTO_INCRMENT PRIMARY KEY,现在我想:
ALTER IGNORE TABLE `my_table`
ADD UNIQUE (`type`, `owner`);
当然,我几乎没有 type = 'Apple' 且所有者 = 'Apple CO' 的记录。所以我的问题是哪一条记录将是 ALTER TABLE 之后保留的特殊记录,是 ID 最小的记录还是最新插入的 ID 最大的记录?
第一条记录将保留,其余记录将被删除§§ http://dev.mysql.com/doc/refman/5.7/en/alter-table.html:
IGNORE
是 MySQL 的扩展
标准 SQL。它控制如何更改
如果有重复项,TABLE 就可以工作
新表中的唯一键或者如果
严格模式时会出现警告
已启用。如果IGNORE
没有指定,
如果满足以下条件,则副本将中止并回滚
出现重复键错误。如果IGNORE
被指定,只有first行是
使用具有重复项的行
唯一键,其他冲突行
是deleted。不正确的值是
截断为最接近的匹配
可接受的值
我猜测这里的“第一个”是指 ID 最小的那个,假设 ID 是主键。
另请注意:
从 MySQL 5.7.4 开始,IGNORE
条款为ALTER TABLE
is removed它的使用产生了error.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)