在重复键上插入会导致自动增量字段出现问题

时间:2011-11-28 03:31:44

标签: 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 (`unique`,`not_unique`) VALUES ('John','Doe')
  ON DUPLICATE KEY UPDATE `foo_id`=LAST_INSERT_ID(`foo_id`);

SELECT LAST_INSERT_ID();

此处LAST_INSERT_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();

此处LAST_INSERT_ID返回1.这是正确的。

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

SELECT LAST_INSERT_ID();

这里LAST_INSERT_ID返回3.为什么?我希望它是2.如果这是一个错误,是否有解决方法?

1 个答案:

答案 0 :(得分:0)

在尝试插入的开始处获取了id,并在失败时被丢弃。