GP--创建与管理序列

创建与管理序列

序列常用于在新增记录时自动生成唯一标识符,序列的管理包括创建序列、使用序列、修改序列以及删除序列。

(1)创建序列

gpadmin=# \h CREATE SEQUENCE                        查看创建序列的帮助

在这里插入图片描述
创建名为myserial 的序列

CREATE SEQUENCE myserial START 101;
gpadmin=# \ds                                        通过\ds命令查看当前数据库中存在的序列

在这里插入图片描述

(2)使用序列

1、 可以使用nextval函数对序列进行操作。例如:获取序列的下一个值并插入表中:

	INSERT INTO vendors VALUES (nextval('myserial'), 'acme');

2、重置一个序列计数器的值,函数nextval是不回滚的,一旦使用nextval中生成这个序列时下次使用时不能使用这个值,不管该序列创建是否成功还是失败;
注意:如果启用了镜像功能,nextval不允许在UPDATE和DELETE语句中被使用,另外currval和lastval函数目前未被GPDB支持。

3、检查序列当前的计数设置:SELECT * FROM SEQ_NAME,例如:

	SELECT * FROM myserial;

4、可以使用setval函数重置一个序列计数器的值。例如:

SELECT setval('myserial', 201);

(3)修改序列

gpadmin=# \h alter sequence                          查看修改序列的帮助

在这里插入图片描述
修改当前序列的开始值为105

ALTER SEQUENCE myserial RESTART WITH 105;

删除序列

gpadmin=# \h drop sequence 查看修改序列的帮助
在这里插入图片描述

devdw=# drop sequence myseq;                 删除当前序列
DROP SEQUENCE
devdw=# \ds                                 再次查看当前序列时提示无序列
No relations found. 

序列函数

序列函数

函数								返回类型			描述 
currval(regclass)					bigint			返回最近一次用 nextval 获取的指定序列的数值 nextval(regclass)					bigint			递增序列并返回新值 
setval(regclass, bigint)			bigint			设置序列的当前数值 
setval(regclass, bigint, boolean)	bigint			设置序列的当前数值以及 is_called 标志

范例:

CREATE SEQUENCE seq_test INCREMENT BY 1 MINVALUE 1 MAXVALUE 1000 START WITH 1 NO CYCLE;

INCREMENT BY : 每次序列增加(或减少)的步长
MINVALUE : 序列最小值,NO MINVALUE表示没有最小值
MAXVALUE : 序列最大值,NO MAXVALUE表示没有最大值
START WITH :以什么序列值开始
CYCLE : 序列是否循环使用
OWNED BY : 可以直接指定一个表的字段,也可以不指定。

建表:
CREATE TABLE test (
id int not NULL default nextval('seq_test'),
shipment_no bigint
)
;

insert into test (shipment_no) values ('12355756');
insert into test (shipment_no) values ('422342345');
insert into test (shipment_no) values ('5235235235');
insert into test (shipment_no) values ('23426526');
insert into test (shipment_no) values ('26462346526');

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值