2011-11-28 60 views
2
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

它是3.那麼是什麼?你不應該依賴代理PK值 – zerkms

回答

0

該id是在試圖插入的開始處被採用的,並且在失敗時被丟棄。

相關問題