首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL:插入时基于MAX()子查询的安全自动增量MySQL字段

MySQL:插入时基于MAX()子查询的安全自动增量MySQL字段
EN

Stack Overflow用户
提问于 2016-04-21 11:18:42
回答 1查看 38关注 0票数 0

我有下表结构。

代码语言:javascript
复制
CREATE TABLE `comments` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `articleid` int(11) NOT NULL DEFAULT '0',
 `sequence` int(11) NOT NULL DEFAULT '0',
 PRIMARY KEY (`id`),
 UNIQUE KEY `comments4` (`articleid`) USING BTREE,
 UNIQUE KEY `comments5` (`articleid`, `sequence`) USING BTREE,
 KEY `comments3` (`articleid`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

当我插入数据时,sequence应该根据最大值自动递增。所有操作都很好,直到两次并行请求命中导致MySQL错误。

SQLSTATE23000:完整性约束违反: 1062重复条目'2137092-3‘的关键字'comments5’

我试图用Subquery来解决这个问题,但结果却导致了大量的性能问题。

不然我怎么解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2016-04-21 11:23:50

把选择的最大值().以及事务中的插入。Max(9在INNODB中始终是一个问题)

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

https://stackoverflow.com/questions/36767988

复制
相关文章

相似问题

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