MySQL AUTO_INCREMENT 示例

mysqlmysqli database

让我们了解 ATUO_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()’函数或使用 C API 函数‘mysql_insert_id()’检索最新的自动生成的‘AUTO_INCREMENT’值。

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

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

  • 当列达到数据类型的上限时,将再次尝试生成数字序列。但这失败了。

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


相关文章