PostgreSQL中序列(sequence)的使用
-- 創(chuàng)建序列
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 ;
-- 獲取下一個(gè)序列
SELECT nextval('my_seq01');
-- 獲取當(dāng)前序列(不增加序列)
SELECT currval('my_seq01');
-- 設(shè)置當(dāng)前值(小心使用)
SELECT setval('my_seq01', 2000);
-- 或者
ALTER SEQUENCE my_seq01 RESTART WITH 2000;
-- 創(chuàng)建表并引用序列
CREATE TABLE "test"."my_table01"
(
id bigint not null default nextval('my_seq01'),
name text,
CONSTRAINT "my_table01_pkey" PRIMARY KEY ("id")
);
-- 插入數(shù)據(jù)
INSERT INTO "test"."my_table01"("name") VALUES('kate'),('wangwei'),('liuyang') ;
-- 查詢數(shù)據(jù)
SELECT * FROM "test"."my_table01" ;
-- 創(chuàng)建表
CREATE TABLE "test"."my_table02"
(
id bigint not null,
name text,
CONSTRAINT "my_table02_pkey" PRIMARY KEY ("id")
);
-- 將序列設(shè)置為表中某個(gè)字段的默認(rèn)值
ALTER TABLE "test"."my_table02" ALTER COLUMN id SET DEFAULT nextval('my_seq01');
-- 查詢 序列 與 表、列的綁定關(guān)系
WITH column_sequence AS ( SELECT table_schema, table_name, column_name, substr(column_default, 10, length(column_default) - 21) AS sequence_name FROM information_schema.columns WHERE column_default LIKE 'nextval%' ) SELECT cs.table_name, cs.column_name, s.sequence_catalog, s.sequence_schema, s.sequence_name, s.data_type, s.start_value, s.minimum_value, s.maximum_value, s.increment, s.cycle_option FROM information_schema.sequences s JOIN column_sequence cs ON s.sequence_schema = cs.table_schema AND s.sequence_name = cs.sequence_name WHERE sequence_catalog = 'gufen' AND sequence_schema = 'middle' ORDER BY cs.table_name, cs.column_name,s.sequence_name;
本文來(lái)自博客園,作者:業(yè)余磚家,轉(zhuǎn)載請(qǐng)注明原文鏈接:http://www.rzrgm.cn/yeyuzhuanjia/p/19094439

浙公網(wǎng)安備 33010602011771號(hào)