首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL: ALTER IGNORE TABLE ADD UNIQUE,将截断什么?

MySQL: ALTER IGNORE TABLE ADD UNIQUE,将截断什么?
EN

Stack Overflow用户
提问于 2011-03-28 16:41:32
回答 2查看 45.8K关注 0票数 33

我有一个包含4列的表: ID、类型、所有者、描述。ID是AUTO_INCREMENT主键,现在我想:

代码语言:javascript
复制
ALTER IGNORE TABLE `my_table`
    ADD UNIQUE (`type`, `owner`);

当然,我几乎没有type = 'Apple‘和owner = 'Apple CO’的记录。所以我的问题是,在ALTER TABLE之后,哪个记录将是保留的特殊记录,ID最小的记录,或者ID最大的记录作为最新插入的记录?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-28 16:49:52

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

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

我猜这里的“first”指的是ID最小的那个,假设ID是主键。

另请注意:

从MySQL 5.7.4开始,ALTER TABLEIGNORE子句已删除,并且使用该子句会生成error.

票数 49
EN

Stack Overflow用户

发布于 2020-04-02 19:02:48

您的问题似乎是ALTER IGNORE被弃用的原因之一。

这来自ALTER IGNORE弃用上的MySQL notes

此功能定义不正确(第一行是什么?),导致复制出现问题,禁用唯一索引创建的联机alter,并导致外键出现问题(父表中删除的行)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5456520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档