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 是啥? [复制]