MySQL 自动增量是如何工作的?

Posted

技术标签:

【中文标题】MySQL 自动增量是如何工作的?【英文标题】:How does MySQL Auto Increment work? 【发布时间】:2011-06-01 12:57:31 【问题描述】:

我刚刚使用 mysql 查询浏览器创建了一个新表,并注意到 Auto Increment Column 下有一个勾号。它是如何工作的?

以编程方式添加到数据库时,我是否只需添加一个数字,然后数据库会自动增加该数字?

每当有新用户在我的网站上注册时,我希望他们的客户 ID(仅限整数)自动递增,因此我不必尝试随机生成唯一编号。

这可以简单地完成吗?

谢谢!

【问题讨论】:

参考:dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html 谢谢! - 所以,我真的不需要做任何事情。每当添加新行时,它只会添加一个数字? :) 我会为这里的新手创建这个社区。​​span> 【参考方案1】:

以编程方式添加到数据库时,我是否只需添加一个数字,然后数据库会自动增加该数字?

是的,auto_increment 就是这样工作的。

每个新行的值都会递增

值是唯一的,不能重复

如果删除了一行,该行的auto_increment 列将不会被重新分配。

可以使用 mySQL 函数 LAST_INSERT_ID() 访问最后插入行的 auto_increment 值,但它必须在插入查询之后立即在同一个数据库连接中调用

mySQL Reference

【讨论】:

AUTO_INCREMENT 值不一定是唯一的:sqlfiddle.com/#!2/85e93/1【参考方案2】:

还有 1 个, 您也可以插入您自己的值(即您的随机值)。

【讨论】:

【参考方案3】:

是的。 Auto_Increment 列的工作方式就像他们在锡上所说的那样。提示

INSERT 时,使用 NULL 或省略列

使用 LAST_INSERT_ID()(或 API 等效项)获取最后生成的值。

出于安全和业务逻辑原因,通常最好不要直接使用键值作为客户标识符。考虑改用散列/随机代理客户键。

【讨论】:

【参考方案4】:

启用自动增量后,每当创建新记录时,都会自动添加 ID。示例:

如果您的表中有 1 条 ID 为 1 的记录,并且您添加了一条新记录,则 ID 将自动为 2。

【讨论】:

【参考方案5】:

是的,这正是AUTO_INCREMENT 的目的。它查看该表的当前增量值,并自动将该值加 1 存储为新出现的行。您可以在 INSERT 语句中省略该字段,MySQL 将为您处理每一行进入的新行,并为每一行提供自己的唯一 ID。

【讨论】:

以上是关于MySQL 自动增量是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章

如何知道 mysql 中的下一个自动增量 ID 是啥? [复制]

休眠(mysql)刷新与提交中的自动增量

如何使用 phpmyadmin 向 mysql 数据库中的列添加自动增量?

如何在mysql中获取所有具有自动增量主键的表?

如何更改 MySQL 中的自动增量计数器?

如何更改主键自动增量,以便在删除行时不会跳过值[重复]