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

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

时间:2023-12-28 11:37:18浏览次数:34  
标签:自增 Postgresql seq id xx user 序列 主键


场景

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

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

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

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

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

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

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

注:

博客:
霸道流氓气质_C#,架构之路,SpringBoot

实现

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

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

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

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

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

DROP SEQUENCE IF EXISTS tunnel_topology_rel_seq;

CREATE SEQUENCE tunnel_topology_rel_seq;

执行成功之后

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

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

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

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表

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

新建一个序列

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

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

序列的相关方法

函数

返回类型

描述

currval( regclass )

bigint

获取指定序列最近一次使用netxval后的数值,如果没有使用nextval而直接使用currval会出错

lastval()

bigint

返回最近一次用 nextval 获取的任意序列的数值

nextval( regclass )

bigint

递增序列并返回新值

setval( regclass,bigint )

bigint

设置序列的当前数值

setval( regclass,bigint ,boolean )

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 ('霸道');

自增主键序列成功

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

4、postgreql中查看序列当前值

SELECT currval('user_id_seq')

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

标签:自增,Postgresql,seq,id,xx,user,序列,主键
From: https://blog.51cto.com/BADAOLIUMANGQZ/9011927

相关文章

  • postgresql数据库迁移(拷贝数据库文件方式迁移)
    旧机器A:1、找到postgresql的data目录2、停止postgresql数据库3、执行tar-zcvfdatabak.tar.gzdata/新机器B:tar-zxvf databak.tar.gz-C/usr/local/postgres/使用scp或是ftp,或是移动硬盘将压缩文件放到新机器B上,前提条件是B机器要装有新的postgresql数据库,先停止数据库,然后找......
  • postgresql数据库报“connections on Unix domain socket "/tmp/.s.PGSQL.5432"?”
    使用postgresql数据库的时候经常遇到的问题:[postgres@test~]$psqlpsql:couldnotconnecttoserver:Nosuchfileordirectory Istheserverrunninglocallyandaccepting connectionsonUnixdomainsocket"/tmp/.s.PGSQL.5432"?现象如上,但是数据库是启动状态,将......
  • Postgresql学习(1)【菜鸟教程学习】
    在数据库术语里,PostgreSQL使用一种客户端/服务器的模型。一次PostgreSQL会话由下列相关的进程(程序)组成:一个服务器进程,它管理数据库文件、接受来自客户端应用与数据库的联接并且代表客户端在数据库上执行操作。该数据库服务器程序叫做postgres。那些需要执行数据库操作的用户的客户......
  • lightdb/postgresql中plpgsql、函数与操作符、表达式及其内部实现
    PG_PROCPG_OPERATORpg_opclass用于定义索引上的相关操作符,一般来说是同一类数据类型。pg_opfamiliy定义了相互兼容的数据类型的操作符,关系见https://www.postgresql.org/docs/9.1/catalog-pg-opclass.html。pg8.3引入pg_opfamilies,原因:Create "operatorfamilies" toimprove......
  • TPCH-PostgreSQL生成数据集并导入数据表
    1.数据集下载TPC-H数据集: https://github.com/gregrahn/tpch-kit2.解压安装unzip tpch-kit-master.zipcdtpch-kit-master/dbgen/make -f Makefile通过上面命令,生成两个文件,分别是dbgen、qgen。分别用于产生数据和查询。3.生成数据##进入dbgen目录cdtpch-kit-master......
  • PostgreSQL数据库中插入数据并跳过重复记录
    概述:ONCONFLICT是将新数据插入现有表时处理唯一性冲突的一种方式快速预览1.DOUPDATESET:重复则更新2.DONOTHING:重复则跳过先创建表t_daily_stats、并且主键字段由serial_no、date组成,以及其他字段--创建设备每日统计表CREATETABLEt_daily_stats(seri......
  • 问题1:Ubuntu执行`sudo apt install XXX`报错出现Failed to Fetch
    报错问题:解决方案:1.查看自己Ubuntu的版本:lsb_release-a(LSB是LinuxStandardBase(Linux标准库)的缩写, lsb_release命令 用来与具体Linux发行版相关的Linux标准库信息)获取版本号之后进入:https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/2.进入网址......
  • S32Kxxx bootloader之CAN FD UDS bootloader
    了解更多关于bootloader的C语言实现,请加我Q扣:1273623966(验证信息请填bootloader),欢迎咨询或定制bootloader(在线升级程序)。六年前,汽车内ECUCAN网络还有低速CAN网络,速度是250kbps,不用接终端电阻就可以组网。但是很快ECUCAN网络都转为高速CAN网络,速度高于500k......
  • xxl_job系列---【xxl_job快速入门教程】
    1.gitee仓库地址(克隆到本地)地址:https://gitee.com/xuxueli0323/xxl-job2.项目结构3.部署xxl-job-admin切换到2.4.0分支3.1修改数据库连接mysql8(默认)3.2修改数据库连接mysql5.71.修改mysql驱动2.修改配置文件4.新springboot项目集成xxl_job4.1.pom中加入下面依赖<?x......
  • PostgreSQL的安装和卸载
    一、PostgreSQL的卸载查看版本号和系统类别:cat/etc/redhat-release如果是redhat/centos:(yuminstall)yum删除软件包:yumremovepostgresql*删除相关目录文件:rm-rf/var/lib/pgsqlrm-rf/usr/pgsql*删除pg相关用户组/用户userdel-rpostgresgroupdelpostgresrpm包安装的......