开发者社区 问答 正文

防止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 ;

展开
收起
保持可爱mmm 2020-05-17 12:46:13 487 分享 版权
1 条回答
写回答
取消 提交回答
  • 您可以将innodb_autoinc_lock_modeconfig选项设置"0"为“传统”自动增量锁定模式,以确保所有INSERT语句将为AUTO_INCREMENT列分配连续的值。

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

    2020-05-17 12:56:46
    赞同 展开评论