我有以下表格结构。
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
应根据MAX值自动增量。一切正常,直到两个parellel请求命中导致MySQL错误
SQLSTATE [23000]:完整性约束违规:1062重复条目 '2137092-3'代表关键'comments5'
我尝试使用带子查询的事务来解决这个问题,但结果却导致了大量的性能问题。
我还能如何解决这个问题?
答案 0 :(得分:0)
将选择Max().....和插入物放入TRANSACTION中。 Max(9在INNODB中总是一个问题