MySQL AUTO_INCREMENT 及示例


让我们了解 AUTO_INCREMENT 是如何工作的 -

AUTO_INCREMENT 属性用于为新行生成唯一的标识。让我们看看这个语句是如何工作的。在此之前,请考虑以下查询 -

查询

CREATE TABLE tableName (
   id MEDIUMINT NOT NULL AUTO_INCREMENT,
   name CHAR(30) NOT NULL,
   PRIMARY KEY (id)
);
INSERT INTO tableName (name) VALUES
(‘val1’),('val2'),('val3'),
('val4');

SELECT * FROM tableName;

输出

+----+---------+
| id | name    |
+----+---------+
| 1  | val1    |
| 2  | val2    |
| 3  | val3    |
| 4  | val4    |
+----+---------+

在上面的查询中,没有为“AUTO_INCREMENT”列指定值,因此 MySQL 自动为“id”列分配了一系列数字。也可以显式分配值 0,以便数字序列从 0 开始。只有在未启用“NO AUTO VALUE ON ZERO”SQL 模式时才能执行此操作。

  • 如果某列被声明为“NOT NULL”,则可以为该列分配 NULL 以生成一系列数字。

  • 当任何值插入到 AUTO_INCREMENT 列中时,该列将设置为该值,并且序列也将重置,以便它从最大列值开始自动生成顺序范围内的值。

  • 可以更新现有的“AUTO_INCREMENT”列,这也会重置“AUTO_INCREMENT”序列。

  • 可以使用 SQL 中的“LAST_INSERT_ID()”函数或使用“mysql_insert_id()”(这是一个 C API 函数)检索最近自动生成的“AUTO_INCREMENT”值。

  • 这些函数是特定于连接的,这意味着它们的返回值不受执行插入操作的其他连接的影响。

  • 可以使用“AUTO_INCREMENT”列的最小整数数据类型,该类型足够大以容纳用户所需的最大序列值。

  • 当列达到数据类型的上限范围时,会尝试再次生成一系列数字。但这会失败。

因此,如果可能,请使用 UNSIGNED 属性,以便在列 AUTO_INCREMENT 值中允许更大的值范围。

更新于: 2021年3月9日

403 次查看

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.