2013-04-26 49 views
2

我只是想讓我的MySQL表ID(主鍵),從0開始..我想ID從0開始,而是從1

正如我所看到的,我開始使用ALTER TABLE yourtable AUTO_INCREMENT = 0,但它從1開始。我需要做什麼?

EDIT1

我還清空我的表截斷選項

+0

爲什麼?不要試圖影響'AUTO_INCREMENT'值。把它留給數據庫去做。無論如何,這是任意的。如果你想添加一些你想分配的ID,你不應該使它成爲'AUTO_INCREMENT'。 – 2013-04-26 08:59:15

+0

可能是http://stackoverflow.com/questions/1142472/how-to-force-mysql-to-take-0-as-a-valid-auto-increment-value的副本 – Frhay 2013-04-26 09:00:39

+0

@BartFriederichs實際上它必須做的一些在PHP中的數組與工作,所以我需要它..guess我會從1開始,並在我的PHP代碼中遞減數組.. – user2234992 2013-04-26 09:00:40

回答

4
SET [GLOBAL|SESSION] sql_mode='NO_AUTO_VALUE_ON_ZERO' 

NO_AUTO_VALUE_ON_ZERO影響AUTO_INCREMENT列的處理。通常,通過向其中插入NULL或0來爲列生成下一個序列號。 NO_AUTO_VALUE_ON_ZERO將此行爲抑制爲0,以便只有NULL纔會生成下一個序列號。

如果0已存儲在表的AUTO_INCREMENT列中,此模式可能很有用。 (0存儲不是一個推薦的做法,順便說一句。)

Reference

Reference 2

+0

wtf?爲什麼不是零就好。這是一個非常正常的數字。 – Fuser97381 2014-10-15 19:04:06

+0

@ Fuser97381:是的,這是一個數字,但它會讓生活更加艱難。在許多編程語言中,當你使用布爾函數並傳遞一個0作爲參數時,你必須注意。例如,在php中,一些函數將0解釋爲FALSE。如果您從數據庫中獲得一個id,請將其存儲在變量$ id中,然後使用:empty($ id)來檢查$ id是否爲有效的ID,該函數在$ id = 0時返回FALSE。 – Frank 2017-12-19 18:13:34

相關問題