2014-02-28 219 views
0

我在我的一個項目中使用了重複鍵。但是當所有行都已經存在並且沒有要更新的數據時,它也會增加auto_increment計數器。所以,以前的AUTO_INCREMENT = 5,對重複鍵查詢執行後自動遞增AUTO_INCREMENT計數器= 6。所以,我的條目表變, id __ 1 2 3 4 6 重複鍵主鍵自動增量

有一個在my.ini中,但沒有爲「innodb_autoinc_lock_mode」一個解決方案在my.ini中更改和設置,有沒有其他方法可以使用php代碼管理自動增量?


id name email 
1 name1 [email protected] 
3 name3 [email protected] 

我有這個表。其中id是primarykey和email是uniqueId。現在,我使用值(name1,name1 @ mail.com)在重複鍵更新上運行,因此,此查詢不會更新或創建新條目,因爲它已經存在。但auto_increment計數器變成3.所以,對於下一個插入操作,新的id是3.

+0

該行爲的問題究竟是什麼?身份證不應該「看起來不錯」。 –

+0

你能證明「重複鍵」的語法嗎?自動增量字段在更新時不會更改,除非您正在使用REPLACE或手動調整它們。 – amenadiel

+0

@amenadiel我相信OP並不意味着「我的表更改」,但是在鍵衝突之後,下一個「INSERT」的auto_increment值發生了變化。 –

回答

0

如果你想使用php代碼來管理你的ID,那麼根本不要使用自動增量。

通過遞增最大id值(通過使用select max()...獲取)手動設置id。