2013-04-26 60 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

相关问题