Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 插入重复键导致自动递增字段出现问题_Mysql - Fatal编程技术网

Mysql 插入重复键导致自动递增字段出现问题

Mysql 插入重复键导致自动递增字段出现问题,mysql,Mysql,这是桌子 CREATE TABLE IF NOT EXISTS `foo` ( `foo_id` INT NOT NULL AUTO_INCREMENT , `unique` CHAR(255) NULL , `not_unique` CHAR(255) NULL , PRIMARY KEY (`foo_id`) , UNIQUE INDEX `unique_UNIQUE` (`unique` ASC) ) ENGINE = InnoDB; INSERT INTO foo

这是桌子

CREATE  TABLE IF NOT EXISTS `foo` (
  `foo_id` INT NOT NULL AUTO_INCREMENT ,
  `unique` CHAR(255) NULL ,
  `not_unique` CHAR(255) NULL ,
  PRIMARY KEY (`foo_id`) ,
  UNIQUE INDEX `unique_UNIQUE` (`unique` ASC) )
ENGINE = InnoDB;
INSERT INTO foo (`unique`,`not_unique`) VALUES ('John','Doe')
  ON DUPLICATE KEY UPDATE `foo_id`=LAST_INSERT_ID(`foo_id`);

SELECT LAST_INSERT_ID();
此处最后一个插入ID返回1。这是正确的

INSERT INTO foo (`unique`,`not_unique`) VALUES ('John','Doe')
  ON DUPLICATE KEY UPDATE `foo_id`=LAST_INSERT_ID(`foo_id`);

SELECT LAST_INSERT_ID();
此处最后一个插入ID返回1。这是正确的

INSERT INTO foo (`unique`,`not_unique`) VALUES ('John','Doe')
  ON DUPLICATE KEY UPDATE `foo_id`=LAST_INSERT_ID(`foo_id`);

SELECT LAST_INSERT_ID();

此处最后一个插入ID返回3。为什么?我希望是2点。如果这是一个错误,是否有解决方法?

该id是在尝试插入的开始时获取的,失败时被丢弃。

该id是在尝试插入的开始时获取的,失败时被丢弃。

它是3。那又怎么样?您永远不应该依赖于代理PK值,因为它是3。那又怎么样?永远不要依赖代理PK值