mysql - 我可以在具有 AUTO_INCREMENT 属性的列中使用零吗

标签 mysql auto-increment

我使用的是 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/

相关文章:

php - 拉拉维尔 5.5;具有 3 个复合主键的 3 向数据透视表上的重复条目

mysql - 如何更新MySQL数据库中的列

php - Mysql获取两个表的所有连接记录

php - MySQL 行在 php 页面中未排序

MySQL - 在不中断 AUTO_INCREMENT 的情况下插入行

C#:如何获取使用 Informix 插入的最后一行的 ID 号

mysql - SQL MyISAM,仅重置新插入的自动增量

mysql - 您应该如何删除具有唯一值的行?

sql-server - 在 SQL Server 中将自动增量、主键字段从 SMALLINT 更改为 INT

sql - 你可以在 MySql 中使用自动增量而不是它是主键吗