在不添加新记录的情况下获取下一个主键是不可能的,不是吗? [复制]
Posted
技术标签:
【中文标题】在不添加新记录的情况下获取下一个主键是不可能的,不是吗? [复制]【英文标题】: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 【参考方案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。
【讨论】:
以上是关于在不添加新记录的情况下获取下一个主键是不可能的,不是吗? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何在不使用 datagridview 的情况下编辑绑定到组合框的数据表中的数据?