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

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

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

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

这可以简单地完成吗?

谢谢!

【问题讨论】:

标签: mysql database auto-increment


【解决方案1】:

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

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

  • 每个新行的值都会递增

  • 值是唯一的,不能重复

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

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

mySQL Reference

【讨论】:

【解决方案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。

        【讨论】:

          猜你喜欢
          • 2011-12-22
          • 2014-01-27
          • 2022-12-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多