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值