首页 > 数据库 >Postgresql中自增主键序列的使用以及数据传输时提示:错误:关系"xxx_xx_xx_seq"不存在

Postgresql中自增主键序列的使用以及数据传输时提示:错误:关系"xxx_xx_xx_seq"不存在

时间:2023-12-19 15:12:05浏览次数:36  
标签:自增 Postgresql seq id xx user 序列 主键

场景

Postgresql在Windows中使用pg_dump实现数据库(指定表)的导出与导入:

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/135011801

上面讲使用pg_dump进行postgresql的导出与导入。

如果使用Navicat可以直接连接两个库,则可直接使用数据传输功能。

但是在传输某个表时提示:

错误:关系“xxx_xx_seq”不存在 ..."id"

 

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi

实现

1、这是因为源表的id字段为自增主键,所以要在进行传输的表中执行新建自增主键序列的操作。

 

通过Navicat可以看到id字段为自增主键,且序列名为tunnel_topology_rel_seq

所以需要在目标表中进行创建自增序列的操作,创建之间先执行如果有则删除的操作。

Postgresql中执行删除和创建自增主键序列的语句:

DROP SEQUENCE IF EXISTS tunnel_topology_rel_seq;

CREATE SEQUENCE tunnel_topology_rel_seq;

执行成功之后

 

此时再执行数据传输则成功

 

 

2、pgsql里,有种东西叫自增,很像mysql里的约束。

建立一个自增的序列,每次需要获取自增主键时,调用一下这个序列就可以了。

建立自增主键的序列的语法:

CREATE SEQUENCE
test_id_seq
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START WITH 1
CACHE 1;

语法含义:

INCREMENT BY : 每次序列增加(或减少)的步长
MINVALUE : 序列最小值,NO MINVALUE表示没有最小值
MAXVALUE : 序列最大值,NO MAXVALUE表示没有最大值
START WITH :以什么序列值开始
CYCLE : 序列是否循环使用
OWNED BY : 可以直接指定一个表的字段,也可以不指定。

为了测试新建一个user表

 

新建一个序列

CREATE SEQUENCE
user_id_seq
INCREMENT 1
MINVALUE 1
MAXVALUE 9223372036854775807
START WITH 1
CACHE 1;

 

序列的相关方法

currval( regclass )nextval( regclass )setval( regclass,bigint ,boolean )
函数返回类型描述
bigint 获取指定序列最近一次使用netxval后的数值,如果没有使用nextval而直接使用currval会出错
lastval() bigint 返回最近一次用 nextval 获取的任意序列的数值
bigint 递增序列并返回新值
setval( regclass,bigint ) bigint 设置序列的当前数值
bigint 设置序列的当前数值以及 is_called 标志,如果为true则立即生效,如果为false,则调用一次nextval后才会生效

3、postgresql中设置字段的默认值为序列的nextval

设置id字段的默认值为nextval('user_id_seq');

ALTER TABLE "public"."user" ALTER COLUMN id SET DEFAULT nextval('user_id_seq');

再向user表中插入数据,这样写

INSERT INTO "public"."user" ("name") VALUES ('霸道');

自增主键序列成功

 

4、postgreql中查看序列当前值

SELECT currval('user_id_seq')

 

标签:自增,Postgresql,seq,id,xx,user,序列,主键
From: https://www.cnblogs.com/badaoliumangqizhi/p/17913778.html

相关文章

  • 记一次postgresql数据库插入记录失败的问题。。。
    代码在测试环境中运行了一段时间,之前都没有问题,突然pg数据库中的某个表不能插入记录了,具体来说是新插入的主键与表中已有记录的主键重复导致入库失败,但是主键设置的是自增策略,理论上说,不会重复。网上看到有人说需要设置下该表主键对应序列的下一个值。查看表的数据定义语句如下......
  • PostgreSQL PG_DUMP 工作失败了怎么回事及如何处理
    最近群里有同学问关于pg_dump失败的问题,但是最近老眼昏花脑子搭错线,看成mysqldump还傻傻的问人家mysql那个版本。所以基于这个pg_dump的问题的写一篇,pgdump对比mysqldump来说,的确从功能性和性能方面要比mysql给的逻辑备份的方式要好的多,这里我们可以稍微浅浅的比较一下1 pg_dum......
  • 世微 AP75XX 低压差线性稳压器 LDO 多种分装
    产品描述     AP75XX是一款采用CMOS技术的低压差线性稳压器。最高工作电压可达24V,有几种固定输出电压值,输出范围为2.8V~9.0V,具有较低的静态功耗,广泛用于各类音频、视频设备和通信等设备的供电。特点应用领域封装信息输出电压选型注:(XX代表输出电压)型号输出电压封......
  • ROW_NUMBER 开窗函数优化方案(Oracle && PostgreSQL 性能比对)
    帮朋友优化一条很简单的窗口函数ROW_NUMBER()OVER(),Oracle迁移PostgreSQL项目。原始SQL和执行计划STUDENT_BAK表我模拟的数据,3千万行数据。SELECTSTU_ID,STU_NAME,STU_SEX,STU_AGE,STU_DATE,STU_CLASSID,STU_SALFROM(SELECTSB.*, ROW_NUMBER()OVER(P......
  • sqlserver 查询一个表的主键是哪些表的外键
    select object_name(a.parent_object_id)as '表名'from sys.foreign_keys awhere a.referenced_object_id=object_id('XXX')--XXX为需要查询的表......
  • 【Nacos】启动报错 failed to req API:/nacos/v1/ns/instance after all servers([xxx
    1  com.alibaba.nacos.api.exception.NacosException:failedtoreqAPI:/nacos/v1/ns/instanceafterallservers([xxx])tried:ErrCode:403,ErrMsg:<html><body><h1>Whitelab#我的配置spring.application.name=virtuous-base-servicespring.profiles.......
  • Linux服务器快速安装PostgreSQL15以及pgvector向量插件
    最近开始体验FastGPT或Dify等开源知识库问答系统,用他们试着开发调试一些小助手。这中间需要使用到PostgreSQL,就在自己服务器上进行了安装,特此记录下。环境说明:阿里云ECS,2核8G,X86架构,CentOS7.9操作系统。选择版本1.打开PostgreSQL官网下载页面,选择操作系统和数据库版本。我本......
  • Linux服务器快速安装PostgreSQL15以及pgvector向量插件
    最近开始体验FastGPT或Dify等开源知识库问答系统,用他们试着开发调试一些小助手。这中间需要使用到PostgreSQL,就在自己服务器上进行了安装,特此记录下。环境说明:阿里云ECS,2核8G,X86架构,CentOS7.9操作系统。选择版本1.打开PostgreSQL官网下载页面,选择操作系统和数据库版本。我本机......
  • [DELL] 解决DELL R7XX系列 iDRAC远程访问失效的故障
    什么是DELLiDRAC?DelliDRAC,全称是IntegratedDellRemoteAccessController,是戴尔公司为其服务器和存储设备提供的一种远程管理解决方案。它的主要用途是为了简化IT管理员对戴尔硬件设备的管理和监控。以下是DelliDRAC的一些主要用途:远程访问:iDRAC允许管理员从远程位置访问和管......
  • 主键和外键
    主键主键(PrimaryKey):主键是用于唯一标识表中每一行记录的字段或字段组合。每个表只能有一个主键,且主键的值不能重复且不能为NULL。主键通常用于加速数据检索,因为数据库系统会为主键创建索引。在MySQL中,可以在表的创建时或之后通过ALTERTABLE语句添加主键。在创建表时定义......