首页 > 解决方案 > 从没有自动增量的表中获取最后一个主键

问题描述

我有一个具有主键的表,出于某种原因,我被建议不要使用 AUTO_INCREMENT 标志。所以每次我必须插入一个新条目时,我都会搜索主键的最后一个插入值(最高值)。然后我将它增加 1 以获得一个新的 ID。现在我面临的问题是,插入第一个条目时,表中没有数据。

任何人都可以建议检查表中是否存在数据的最佳方法,如果没有将 id 设置为 1 并插入新行,否则从表中获取最后一个 id,将其递增 1,然后插入新行。

PS: mysql 新手,所以语法有困难。

标签: mysql

解决方案


根据您的陈述“我搜索插入的最后一个值(最高值)的主键”,我认为您当前正在执行类似的操作以获得最大的现有 ID:

SELECT MAX(id_column) + 1 FROM my_table

如果你有一张空桌子,这当然会返回NULL。在这种情况下,如果没有最大值,只需处理NULL使用返回 0:IFNULL

SELECT IFNULL(MAX(id_column), 0) + 1 FROM my_table

如果表没有行,这将输出 1 作为下一个标识符。


推荐阅读