【问题标题】:MySQL AUTO_INCREMENT=535MySQL AUTO_INCREMENT=535
【发布时间】:2014-11-04 23:18:01
【问题描述】:

AUTO_INCREMENT=535 的实际含义或作用是什么?我在创建表时看到了它,如下所示,但不知道它的作用或用途。 创建表:

CREATE TABLE `my_table` (
`entry_id` int(11) NOT NULL auto_increment,
`address` varchar(512) NOT NULL,
PRIMARY KEY(entry_id)
) ENGINE=InnoDB AUTO_INCREMENT=535 DEFAULT CHARSET=utf8

【问题讨论】:

  • 它从 535 开始 auto_increment 值而不是默认值 1
  • 感谢 serakfalcon 和 sbrbot。那么这是否意味着我的第一个 ebtry_id 实际上是 535,并且该表不允许任何低于该数字的 entry_id 值,因为它只会从那里递增?
  • 不,您可以将任何对 int(11) 有效的值作为 entry_id(甚至是负值)。请注意,如果您自定义插入一个高于当前最高 auto_increment 值的值,您可能会遇到问题(尽管当您重新启动 mysql 服务时,它会从该字段中的最大值自动递增)。

标签: mysql innodb auto-increment


【解决方案1】:

AUTO_INCREMENT 属性可用于生成唯一标识

您可以使用一对语句:DROP TABLECREATE TABLE 来重置自动增量列。与 TRUNCATE TABLE 语句一样,这些语句会删除所有数据并将自动增量值重置为零。

没有为 AUTO_INCREMENT 列指定值,因此 MySQL 自动分配了序列号。

您还可以 ** 显式地将 0 ** 分配给列以生成序列号。如果该列被声明为 NOT NULL,那么**也可以将 NULL **分配给该列以生成序列号。

您可以使用 LAST_INSERT_ID() 检索最新的 AUTO_INCREMENT 值

要从 1 以外的 AUTO_INCREMENT 值开始,您可以使用 CREATE TABLE 或 ALTER TABLE 设置该值,如下所示:

mysql> ALTER TABLE tbl AUTO_INCREMENT = 100;

AUTO INCREMENT 间隔值由 MySQL 服务器变量 auto_increment_increment 控制并全局应用。要将其更改为不同于默认值 1 的数字,请在 MySQL 中使用以下命令:

mysql> SET @@auto_increment_increment = [间隔数];

其中 [interval number] 是您要使用的间隔值。因此,如果我们想将间隔设置为 5,我们将发出以下命令:

mysql> SET @@auto_increment_increment = 5; 

参考:-

http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

【讨论】:

    【解决方案2】:

    自动递增字段允许自动索引表中的记录。通常担任Unique Key

    任何具有AUTO_INCREMENT=535 之类定义的表都意味着下一个自动生成的键将从 535 开始。

    这通常发生在您从现有数据库备份时。但也可以在一些特殊情况下使用,以获得更高的起始索引值。

    【讨论】:

      【解决方案3】:

      告诉何时开始使用 auto_increment 计数。例如,如果您想为某些专用目的保留一些 ID。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-22
        • 2015-04-15
        • 2021-11-07
        • 2015-04-30
        • 2021-05-07
        相关资源
        最近更新 更多