PostgreSQL中序列(sequence)的使用

-- 创建序列

CREATE SEQUENCE test.my_seq01
INCREMENT BY 1
MINVALUE 1
MAXVALUE 2147483647
START 1
CACHE 1
NO CYCLE;

 

-- 查询序列

SELECT
*
FROM information_schema.sequences
WHERE sequence_schema = 'test'
AND sequence_name = 'my_seq01'
order by sequence_name ;

 

--修改序列的最大值

ALTER SEQUENCE test.my_seq01 MAXVALUE 9223372036854775807 ;
ALTER SEQUENCE test.my_seq01 NO  MAXVALUE ;

 

-- 获取下一个序列

SELECT nextval('my_seq01'); 

 

-- 获取当前序列(不增加序列)

SELECT currval('my_seq01');

 

-- 设置当前值(小心使用)

SELECT setval('my_seq01', 2000);

  

-- 或者

ALTER SEQUENCE my_seq01 RESTART WITH 2000;

  


-- 创建表并引用序列

CREATE TABLE "test"."my_table01"
(
id  bigint not null default nextval('my_seq01'),
name text,
CONSTRAINT "my_table01_pkey" PRIMARY KEY ("id")
);

  

-- 插入数据

INSERT INTO "test"."my_table01"("name") VALUES('kate'),('wangwei'),('liuyang') ;

  

-- 查询数据

SELECT * FROM "test"."my_table01" ;

  

-- 创建表

CREATE TABLE "test"."my_table02"
(
id  bigint not null,
name text,
CONSTRAINT "my_table02_pkey" PRIMARY KEY ("id")
);

  

-- 将序列设置为表中某个字段的默认值

ALTER TABLE "test"."my_table02"  ALTER COLUMN id SET DEFAULT nextval('my_seq01');

 

posted @ 2025-09-16 10:48  业余砖家  阅读(17)  评论(0)    收藏  举报