我使用的是 MySQL 5.0 服务器。我的要求是将一个特殊行添加到具有自动递增主键的现有表中。
如果我们能把这一行的id设为0,对以后项目的维护和管理会有很大的帮助(因为这样容易内存,人工观察也容易发现)。
现在,我知道 MySQL 对您使用自己的值作为自动增量列没有问题,而且我的测试表明我可以使用 UPDATE 查询将行的自动增量主键设置为 0。但是,有人担心这会如何影响 future INSERT 中列的自动递增功能。
我的(有限的)实验没有显示任何异常,而且我在 MySQL 文档中找不到针对此的任何具体警告。也就是说,除此之外(强调我的):http://dev.mysql.com/doc/refman/5.0/en/create-table.html
There can be only one AUTO_INCREMENT column per table, it must be indexed, and it cannot have a DEFAULT value. An AUTO_INCREMENT column works properly only if it contains only positive values. Inserting a negative number is regarded as inserting a very large positive number. This is done to avoid precision problems when numbers “wrap” over from positive to negative and also to ensure that you do not accidentally get an AUTO_INCREMENT column that contains 0.
我找不到关于 AUTO_INCREMENT 列中值为零的错误解释,所以谁能告诉我 AUTO_INCREMENT 列包含 0 是不是一件坏事?
最佳答案
正如您已经发现的那样,不可能使用 INSERT 将 0 分配给自动递增字段,您需要使用 UPDATE。 AFAIK 连续有一个 0 没有错,除非您尝试转储和导入。但这可以通过先插入数据然后将其标记为自动递增字段来避免。
关于mysql - 我可以在具有 AUTO_INCREMENT 属性的列中使用零吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2288712/