防止InnoDB自动递增ON DUPLICATE KEY

0x0*_*0x0 5 php mysql auto-increment on-duplicate-key

我目前具有包括一次关键问题ID被设置为auto increment.它不断增加ON DUPLICATE KEY.

例如:

ID | field1     | field2

1  | user       | value

5  | secondUser | value

86 | thirdUser  | value
Run Code Online (Sandbox Code Playgroud)

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

反正有没有避免这个?

这是我的mySQL查询的样子:

INSERT INTO table ( field1, field2 ) VALUES (:value1, :value2)
            ON DUPLICATE KEY
            UPDATE field1 = :value1, field2 = :value2 
Run Code Online (Sandbox Code Playgroud)

这就是我的桌子的样子;

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 ;
Run Code Online (Sandbox Code Playgroud)

Eug*_*ash 6

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

也就是说,您不应该依赖应用程序中连续的自动增量ID.他们的目的是提供唯一标识符.