一尘不染

防止InnoDB在DUPLICATE KEY上自动递增

mysql

我目前在将主键ID设置为时遇到问题auto increment。它不断增加ON DUPLICATE KEY

例如:

ID | field1     | field2

1  | user       | value

5  | secondUser | value

86 | thirdUser  | value

从上面的描述中,您会注意到我在该表中有3个输入,但是由于每次更新都会自动递增,因此第三个输入的ID为86。

反正有避免这种情况吗?

这是我的mySQL查询的样子:

INSERT INTO table ( field1, field2 ) VALUES (:value1, :value2)
            ON DUPLICATE KEY
            UPDATE field1 = :value1, field2 = :value2

这是我的桌子的样子;

CREATE TABLE IF NOT EXISTS `table` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `field1` varchar(200) NOT NULL,
  `field2` varchar(255) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `field1` (`field1`),
  KEY `id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

阅读 265

收藏
2020-05-17

共1个答案

一尘不染

您可以将innodb_autoinc_lock_modeconfig选项设置"0"为“传统”自动增量锁定模式,以确保所有INSERT语句将为AUTO_INCREMENT列分配连续的值。

也就是说,您不应该依赖于应用程序中自动递增ID的连续性。它们的目的是提供唯一的标识符。

2020-05-17