【问题标题】:Getting the next primary key without adding a new record is impossible, isn't it? [duplicate]在不添加新记录的情况下获取下一个主键是不可能的,不是吗? [复制]
【发布时间】:2015-10-19 06:59:57
【问题描述】:

我考虑了谷歌排名靠前的结果,几乎所有的 mysql 功能等等......不幸的是,据我所知,不添加新行到数据库的表中,我们可以'不知道下一个主键。请说我错了。这个问题怎么可能没有解决方案?我很失望。

【问题讨论】:

  • 你不能确定(如果你有多个并发用户,即使读取 MySQL 分配的下一个值也不能保证);但真正的问题是“你为什么需要这样做?”
  • 因为在我的项目中,我是用AJAX上传图片的,旁边是提交了包含图片的文章。所以我需要为图片添加一个外键,以便它们可以与候选文章相关联。也就是说,我需要学习候选文章的主键,才能将这个值作为文章中图片的外键。
  • 仍然不需要预测下一个将被分配的id

标签: php mysql sql


【解决方案1】:

用了大约 7 秒在 Google 上找到:https://www.bram.us/2008/07/30/mysql-get-next-auto_increment-value-fromfor-table/

SELECT AUTO_INCREMENT
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = "databaseName"
AND TABLE_NAME = "tableName"

【讨论】:

    【解决方案2】:

    存在于INFORMATION_SCHEMA.TABLES 中(参见here)。在合理的假设下,您可以获得那里的价值。

    合理的假设:

    • 影响自动增量的系统变量没有变化。
    • 没有并发事务。
    • 没有干预重置值。

    【讨论】:

      【解决方案3】:

      通过此请求,您将获得表中的最后一个 id

      从你的表中选择 MAX(id)

      您可以在请求结果中添加 +1。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-26
        • 2015-09-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-16
        相关资源
        最近更新 更多