基本操作

--新增序列
CREATE SEQUENCE xxx_id_seq INCREMENT 1 -- 一次加多少 MINVALUE 1 -- 最小值 START 1 --从多少开始 CACHE 1 CYCLE; --指定表使用
alter table xxx_table alter column id set DEFAULT nextval('xxx_id_seq') --查询序列
SELECT nextval('xxx_id_seq'); --删除序列
DROP SEQUENCE xxx_id_seq; --重置序列
alter sequence xxx_id_seq restart with 1 --修改序列(修改序列的最小值和最大值)
ALTER SEQUENCE sequence_name MINVALUE new_min_value MAXVALUE new_max_value;

serial数据类型

在 PostgreSQL 中,serial 是一种特殊的数据类型,用于自动生成唯一标识符(通常用作自增主键)的列。

serial 数据类型是一个伪类型,实际上是由以下两个类型组成:

  • integer:用于存储自增的数值。
  • sequence:用于生成唯一的数值序列。

当你在表中定义了一个列为 serial 类型时,它将自动创建一个与该列关联的序列,并将默认值设为从该序列中获取的下一个值。每次插入新行时,这个序列会自动递增。

CREATE TABLE example_table (
id serial PRIMARY KEY,
name text
);

虽然 serial 类型是一种方便的方式来创建自增主键列,但实际上它只是一种语法糖,底层仍然使用了 integer 类型和序列。因此,你也可以手动创建一个 integer 类型的列,并使用序列来生成唯一的值。

序列溢出解决方案

方法1:主键序列 int4 修改为 int8

--创建表
CREATE TABLE "linq_test" (
"linq_test_id" serial NOT NULL ,
"merchant_id" int4 NOT NULL,
"sop_task_id" int4 NOT NULL
)
--主键修改为int8
alter table linq_test alter linq_test_id type bigint;
--修改序列类型,重置最大值
ALTER SEQUENCE "linq_test_linq_test_id_seq" AS bigint MAXVALUE 9223372036854775807;

方法2:重置序列

重置前



重置后



新插入数据

如何提前排查序列溢出

--last_value 接近 max_value,表示序列快用完了
SELECT * FROM pg_sequences where last_value is not null
order by last_value desc;

PostgreSQL 序列(Sequence)的更多相关文章

  1. PostgreSQL之Sequence序列(转)

    本文转载自:https://blog.csdn.net/omelon1/article/details/78798961 Sequence序列 Sequence是一种自动增加的数字序列,一般作为行或者 ...

  2. Oracle新表使用序列(sequence)作为插入值,初始值不是第一个,oraclesequence

    Oracle新表使用序列(sequence)作为插入值,初始值不是第一个,oraclesequence 使用oracle11g插入数据时遇到这样一个问题: 1 --创建测试表-- 2 CREATE T ...

  3. Oracle序列(Sequence)创建、使用、修改、删除

    Oracle对象课程:序列(Sequence)创建.使用.修改.删除,序列(Sequence)是用来生成连续的整数数据的对象.序列常常用来作为主键中增长列,序列中的可以升序生成,也可以降序生成.创建序 ...

  4. 序列sequence中的cache问题

    Oracle中序列Sequence的创建语法如下: CREATE SEQUENCE [ schema. ] sequence [ { INCREMENT BY | START WITH } integ ...

  5. oracle数据库--序列(sequence)

    一个问题: 在某张表中,存在一个id列(整数),我们希望在添加记录的时候,该列从1开始,自动的增长,怎么处理? 解决方式:oracle是利用"序列"(sequence)来完成的. ...

  6. Oracle数据库中序列(SEQUENCE)的用法详解

    Oracle数据库中序列(SEQUENCE)的用法详解   在Oracle数据库中,序列的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一个值.本文我们主要介绍了 ...

  7. Oracle 序列(sequence)

    序列(sequence) 是Oracle提供的用于生成一系列唯一数字的数据库对象.它会自动生成顺序递增或者递减的序列号,以实现自动提供唯一的主键值.序列可以在多用户并发环境中使用,并且可以为所有用户生 ...

  8. oracle 序列sequence

    查询所有的序列: select 'create sequence '||sequence_name|| ' minvalue '||min_value|| ' maxvalue '||max_valu ...

  9. 序列(SEQUENCE)

    序列(SEQUENCE)是序列号生成器,可以为表中的行自动生成序列号,产生一组等间隔的数值(类型为数字).其主要的用途是生成表的主键值,可以在插入语句中引用,也可以通过查询检查当前值,或使序列增至下一 ...

  10. 【洛谷】【堆+结论】P4597 序列sequence

    [题目背景:] 原题cf13c 数据加强版(就是说原来能用DP做现在不行了QwQ) [题目描述:] 给定一个序列,每次操作可以把某个数+1-1.要求把序列变成非降数列.而且要求修改后的数列只能出现修改 ...

随机推荐

  1. Object.equals 和 String.equals的区别

    一.  源码展示: 1. Object.equals: ①引用类型地址值比较,直接返回结果:true || false public class Object { public boolean equ ...

  2. flex布局入门

    一.简介 Flexible 单词意思是灵活的意思,flex布局又称为弹性布局或弹性盒子布局 Flex布局(Flexible Box Layout)是CSS3引入的一种布局模型,它旨在提供一种灵活且高效 ...

  3. 代码随想录算法训练营第一天| LeetCode 704. 二分查找、LeetCode 27. 移除元素

    704. 二分查找         题目链接:https://leetcode.cn/problems/binary-search/       视频链接:https://www.bilibili.c ...

  4. GSAP 基础

    GreenSock Animation Platform (GSAP) 是一个业界知名的动画库,它被1100多万个网站使用,有超过50%的获奖的网站都是用了它.不管是在原生环境中,还是任意的框架中,你 ...

  5. 2022-02-08 IValueConverter和StringFormat

    主页 后台 stringFormat

  6. CentOS7挂载NTFS格式的硬盘

    前言 一些NTFS格式的移动硬盘或U盘插在服务器上可能不会自动挂载,本文为手动挂载的步骤. 步骤 安装相关程序: yum install -y ntfs-3g 使用一些命令查看需要挂载的分区 # 查看 ...

  7. CVE-2020-0796 SMB远程代码执行漏洞复现

    前言: 这个windows的永恒之黑漏洞,不得不复现一下啦! 这个漏洞诸多大佬都已经复现了,现在跟随大佬的脚步,逐个复现一下: 可参考:https://www.adminxe.com/1220.htm ...

  8. Oracle表的导出、导入

    有些情况下,需要单独导出某些表,用或者分析数据. 下面记录Oracle表的导出导入方法 1. 表的导出 ./exp $username/$passwd@$ORACLE_SID file=/$file_ ...

  9. 【JMeter】常用线程组设置策略

    常用线程组设置策略 目录 常用线程组设置策略 一.前言 二.单场景基准测试 1.介绍 2.线程组设计 3.测试结果 三.单场景并发测试 1.介绍 2.线程组设计 3.测试结果 四.单场景容量/爬坡测试 ...

  10. CodeForces 1388C Uncle Bogdan and Country Happiness

    题意 给一棵\(n\)节点的树,每个节点有\(a[i]\)个人住,他们从\(1\)号节点回家,回家路上可能从开心的状态变成不开心的状态(但不可以由不开心变为开心),每个节点有个探测器,会探测经过该节点 ...