mysql - 从没有自动增量的表中获取最后一个主键
问题描述
我有一个具有主键的表,出于某种原因,我被建议不要使用 AUTO_INCREMENT 标志。所以每次我必须插入一个新条目时,我都会搜索主键的最后一个插入值(最高值)。然后我将它增加 1 以获得一个新的 ID。现在我面临的问题是,插入第一个条目时,表中没有数据。
任何人都可以建议检查表中是否存在数据的最佳方法,如果没有将 id 设置为 1 并插入新行,否则从表中获取最后一个 id,将其递增 1,然后插入新行。
PS: 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 作为下一个标识符。
推荐阅读
- spring-boot - 无法从spring boot连接到数据库名称中包含日文字符的数据库
- ubuntu-20.04 - ubuntu 20.4 localhost 可从网站访问
- c# - HttpContent.ReadAsByteArrayAsync() 说明
- java - 在 WSO2 APIM 3.2.0 中修改/删除 wso2 类中介或 xml 序列中的请求有效负载内容
- reactjs - 来自 react 应用程序的 graphqlcalls 通过 http 可以正常工作,但是当我实现 https 时,它会因 CORS_Failed 错误而失败
- javascript - Jquery .value 在函数中返回未定义以返回输入值
- javascript - 如何在 React 中动态调用 API?
- javascript - 如何播放 HLS aes 加密视频?
- c# - 如何在c#中获取所有网络适配器的公共IP地址?
- c# - 是否可以在 MatBlazor 中修改 MatTextField 的帮助文本的位置?