PGSQL主键自增的情况下添加数据可能出现错误的解决方法

2023-05-16

PGSQL主键自增的情况下添加数据可能出现错误的解决方法

平时我们在使用数据库的时候,能够体会到逐渐自增所带来的好处,首先因为增量增长按序存放的特性,使得数据检索的效率得到了一定的提升。其次主键自增能够保证表和库的独立性,这也是使用主键自增的好处之一。

不过相对的,我们在使用自增主键的过程中,会发现许多问题。最为明显的就是增加数据时主键冲突导致的异常了,比如说当手动向数据库插入一条带ID的数据的时候,如果再次使用自增,当自增的ID增长到插入的位置的时候,会发现报错信息如下。
报错显示键值已经存在
遇见这种情况的时候,可以有以下三种解决方法。

一、创建表的时候设置主键为identity自增列

一般来说,pgsql的自增列有三种,分别是sequence、serial以及identity。而设置identity的好处是可以锁定主键自增,也就是无法通过手动插入ID来实现数据的增加。
设置方法如下:
设置主键ID为identity自增列

二、删除主键,并再次增加

如果表已经创建完毕,但是又不想删除表中的数据,那么可以通过这种方式来实现
首先删除表中的主键
删除主键
接下来再次使用identity自增列添加对应的主键即可
添加主键
不过这样做有一个问题,那就是主键ID会重新进行排序,如果有表的连接关系等的话,不建议使用这种方法。

三、使增加的ID依据当前数据库中最大ID+1来实现

如果想要全量留存数据库的数据的话,那么可以通过这样的方法来实现
先创建一个序列,并给其设定对应的参数
创建序列
接下来就可以直接查询到对应表的最大自增ID+1的值了
只需要在插入数据的时候使用查询出来的ID即可
为了防止catch中的sequence丢失,可以在创建的时候使用NOCATCH。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PGSQL主键自增的情况下添加数据可能出现错误的解决方法 的相关文章

  • Kotlin JSON格式解析

    Kotlin JSON解析 开发环境就是下面这个 一 添加依赖 在build gradle kts文件中添加下面依赖 dependencies span class token punctuation span span class tok
  • mysql 5.7版本查询一条数据JSON字段拆分多条

    场景 xff1a 查询出来一条数据 xff0c 其中fee items字段为json数组 xff0c 现在要把json数组拆分 xff0c 如果有多条 xff0c 则展示多行数据 xff0c 列转行 表中的数据 字段 fee items 是
  • mysql 字段json行转列

    SET FOREIGN KEY CHECKS 61 0 Table structure for keyid DROP TABLE IF EXISTS 96 keyid 96 CREATE TABLE 96 keyid 96 96 id 96
  • VisualStudio2019+PyQt5

    进入VS修改 把除了默认框选之外的 34 本机开发工具 34 选上 不选的话感觉也没什么运行上的影响 但是 import sys from PyQt5 import QtWidgets 导入PyQt5部件 导入PyQt5没问题 但是却会报一
  • 【Linux】Linux文件系统管理——文件系统常用命令

    文章目录 一 df命令 du命令 fsck命令 dumpfs命令1 1 统计文件系统信息df1 2 统计目录或文件大小du1 3 df命令和du命令的区别1 3 文件系统修复明亮fsck1 4 显示磁盘状态命令dumpe2fs 二 挂载命令
  • vue3 setup lang=“ts“ defineExpose

    vue3 setup lang 61 ts defineExpose Vue 96 span class token tag span class token tag span class token punctuation lt span
  • 关于《软件设计师教程 第5版》UML构件图两类接口描述错误的问题

    如图所示 xff0c 在备考软件设计师时 xff0c 有遇到关于 构件图 的题目 xff0c 官方给的 xff08 是供接口 xff0c O 是需接口 xff0c 就像官方教程上展示的这样 但是发现有其他人说 xff08 是需接口 xff0

随机推荐

  • 统计字符串中每个字母的个数 C语言

    int main char str 100 int count 26 61 0 i 61 0 printf 34 请输入字符串 n 34 gets str while str i 61 39 0 39 if str i gt 61 39 a
  • 51单片机学习笔记5 -- 外部中断

    外部中断 1 外部中断概念2 引脚功能复用3 中断号和中断类型4 外部中断编程 1 外部中断概念 外部中断是单片机实时地处理外部事件的一种内部机制 当某种外部事件发生时 xff0c 单片机的中断系统将迫使CPU暂停正在执行的程序 xff0c
  • k8s部署redis集群(方案1)

    目录 一 创建configmap 二 创建redis集群 三 集群初始化 四 验证集群省略 补充 1 如果整个 redis 集群的 pod 全部都挂掉了 xff0c pod自动拉起后 xff0c 集群不可用 xff0c 需要重建集群 2 重
  • QT5 实现UDP和串口通信

    QT5实现UDP和串口通信 前言 硬件平台 xff1a X86工控机 温湿度模块 xff1b 使用QT5编程实现X86工控机 xff08 客户端 xff09 与网络调试助手UDP通信 xff0c 同时X86工控机与温湿度模块实现串口通信 通
  • STM32单片机DMA串口数据收发

    前言 本实验是在原子哥的DMA实验的基础上进行修改 xff0c 添加了DMA串口数据接收功能 接收到指定数据时LED1的状态翻转 内附源码下载链接 xff1a 添加链接描述 注意 xff1a 在编写DMA串口数据收发时 xff0c DMA发
  • RT-Thread studio 添加CAN通信功能

    前言 最近在学习rt thread xff0c 在学习到CAN通信时遇到了一些问题 xff0c 首先就是如何注册CAN设备 发现在rt thread中 xff0c CAN 与其他的设备注册不一样 xff0c rt thread不会把CAN驱
  • 教你如何一步一步制作自己的PCB个人LOGO

    做了这么多年的硬件了 xff0c 也画了好多电路板 xff0c 昨天心血来潮决定以后在绘制电路板上添加上自己的LOGO 目录 一 LOGO 设计 二 LOGO修改 三 导入AD 一 LOGO 设计 于是开始制作LOGO图案 xff0c 由于
  • Visual Studio v141 生成工具 报错

    使用Visual Studio 2019的时候 xff0c 兼容旧有版本的VS出现如下报错 xff1a 错误 MSB8020 无法找到 Visual Studio 2017 的生成工具 平台工具集 61 v141 若要使用 v141 生成工
  • 一次多线程优化读取文件的实战

    需求描述 xff1a 商户每天会定时将文件传到我们的sftp服务器 xff0c 我们需要对文件解析落库等操作 方案A xff1a 起初的设计是将文件下载到本地 xff0c 读取整个文件 xff0c 落库等一系列处理 方案A的设计本来是没问题
  • VisualStudio突然无法启动显示log文件Error解决方法

    visual studio 启动报 activityLog xml文件 错误 1 在安装目录里面找到 devenv exe 这个文件的所在位置C Program FilesMicrosoft Visual Studio 10 0Common
  • 【笔记】Java实现通过本地浏览器打开UClient访问NC服务,如果失败,则打开IE浏览器访问NC Web服务

    span class token keyword package span span class token namespace nc span class token punctuation span baseapp span class
  • 将VMware虚拟机移到其它磁盘(C盘->D盘)

    1 打开我们的VMware xff0c 然后鼠标放在你的虚拟机上 xff0c 可以看到你的虚拟机所在的路径 xff0c 图中在C盘 xff1a 2 将虚拟机移除 xff0c 鼠标放在虚拟机上 xff0c 右键选择移除 弹出确认框 xff0c
  • linux之shell的正则表达式

    一 grep 文本过滤命令 span class hljs keyword grep span 命令是一种强大的文本搜索工具 xff0c 可以根据用户指定的 模式 对目标文本进行匹配检查 xff0c 打印匹配到的行 xff1b 由正则表达式
  • DDNS 服务搭建

    一 简介 DDNS xff08 动态域名服务 xff09 是将用户的动态公网ip地址映射到一个固定的域名解析服务上 xff0c 用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态公网ip地址推送到服务商的域名解析上 xff0c
  • 数据库关系代数--小练习

    Department dNo dName officeRoom homePage Student sNo sName sex age dNo Course cNo cName cPNo credit dNo SC sNo cNo score
  • 计算机基础-移位运算

    在代码中经常使用进行高低位的截取 哈希计算 xff0c 甚至运用在乘除法运算中 向右移动1位近似表示除以2 xff08 如下表所示 xff09 xff0c 十进制的奇数转化为二进制数后 xff0c 在向右移时 xff0c 最右边的1将被直接
  • Python for-in循环前面有一个变量

    展开全部 1 ls2 61 str i for i in ls1 等价于 1 2 3
  • 04-vscode搭建cmake的编译环境

    vscode 43 mingw搭建C C 43 43 环境系列 01 vscode 43 mingw搭建编译调试环境 02 vscode编译调试单个源文件程序 03 vscode编译调试多个源文件程序 04 vscode搭建cmake的编译
  • C++的string与char* char[]相互转换

    这俩天忙着调试一块AD芯片 xff0c 突然想起今天是程序员日 xff0c 嗯 xff0c 也不知道写点什么 xff0c 那就随笔写点这段时间看的C 43 43 吧 C 43 43 与C语言中最常见的就是字符串了 xff0c 因此 xff0
  • PGSQL主键自增的情况下添加数据可能出现错误的解决方法

    PGSQL主键自增的情况下添加数据可能出现错误的解决方法 平时我们在使用数据库的时候 xff0c 能够体会到逐渐自增所带来的好处 xff0c 首先因为增量增长按序存放的特性 xff0c 使得数据检索的效率得到了一定的提升 其次主键自增能够保