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 值中有更大范围的值。