当前位置: 首页 > news >正文

PostgreSQL解决序列(自增id)自动增长冲突

背景

一般表的id主键我们都是设置为自增序列。

但是如果我们在插入一些数据的时候手动指定id,那么自增序列不会跟随我们手动设置的id增长。

就会出现下次不设置id的时候自增到我们手动指定的id导致主键冲突bug

举个例子

现在数据有

id
1
2
3

现在我们手动插入数据比如

insert into xiaozou(id) values(4)

这时候我们的数据变成

id
1
2
3
4

实际我们的id自增序列还停留在3。

如果我们插入数据不指定id。自动生成的id就还是4,从而导致主键冲突

解决方案

设置自增序列为当前id的最大值+1

SELECT setval('xiaozou_id_seq', (SELECT MAX(id) FROM xiaozou)+1);

xiaozou_id_seq是序列名,xiaozou是表名

如果不知道序列名可以通过如下方式查询

SELECT column_name, column_default
FROM information_schema.columns
WHERE table_name = 'xiaozou' AND column_default LIKE 'nextval%';
http://www.lryc.cn/news/294679.html

相关文章:

  • 1.0 Zookeeper 分布式配置服务教程
  • (Flutter 常用插件整理
  • vue2.0+使用md-edit编辑器
  • Java设计模式大全:23种常见的设计模式详解(二)
  • 【算法与数据结构】718、1143、1035、392、115、LeetCode最长重复子数组+最长公共子序列+不相交的线+判断子序列+不同的子序列
  • OCR文本纠错思路
  • 【java批量导出pdf】优化方案
  • Linux第42步_移植ST公司uboot的第3步_uboot命令测试,搭建nfs服务器和tftp服务器
  • C++枚举算法(3)
  • 【51单片机】LED的三个基本项目(LED点亮&LED闪烁&LED流水灯)(3)
  • Day 17------C语言收尾之链表的删除、位运算、预处理、宏定义
  • python_蓝桥杯刷题记录_笔记_全AC代码_入门5
  • 二叉树的详解
  • 【第三十五节】idea项目的创建以及setting和Project Structure的设置
  • 【c++】跟webrtc学引用计数
  • 开源免费的物联网网关 IoT Gateway
  • 华为OD机试真题C卷-篇3
  • [SWPUCTF 2021 新生赛]include
  • LeetCode、17. 电话号码的字母组合【中等,dfs回溯】
  • SSRF漏洞给云服务元数据带来的安全威胁
  • 【C++】强制类型转换
  • java日志框架总结(四 、JCL日志门面技术)
  • mfc140.dll丢失的几种修复方式,有效的解决文件丢失问题
  • 从一个小故事讲解观察者模式~
  • LeetCode、1137. 第 N 个泰波那契数【简单,动态规划】
  • Python爬虫urllib详解
  • Linux嵌入式开发+驱动开发-中断
  • android tv开发-1,leanback
  • chisel RegInit/UInt/U
  • 华为OD机试真题-田忌赛马-2024年OD统一考试(C卷)