MySQL AUTO_INCREMENT与示例

让我们了解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开始。只有在未启用“零时禁止自动值” SQL模式的情况下,才能执行此操作。

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

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

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

  • 最新自动生成的“ AUTO_INCREMENT;可以使用LAST_INSERT_ID()SQL中的“ ”函数或使用mysql_insert_id()C API函数的“ ”来检索值。

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

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

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

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