基本操作
--新增序列
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 类型时,PostgreSQL 会自动创建一个相关的序列(Sequence),并将列与该序列关联起来。每次向该表插入一行数据时,该列的值都会自动递增。
序列溢出(超出范围 int4最大值2147483647)
方法一:主键 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;
方法二:重置主键id
--重置序列 值为1
alter sequence linq_test_linq_test_id_seq restart with 1
--主键重新赋值
UPDATE linq_test SET linq_test_id = nextval('linq_test_linq_test_id_seq');
重置前
重置后
序列溢出预警
--last_value 接近 max_value 表面序列快溢出了
SELECT * FROM pg_sequences where last_value is not null
order by last_value desc;
标签:PostgreSQL,seq,Sequence,--,linq,test,序列,id
From: https://www.cnblogs.com/lgxlsm/p/17786117.html