PostgreSQL 序列使用

本文深入探讨了PostgreSQL序列的创建、应用、查看和删除方法,包括如何通过序列生成主键、获取序列值以及重置序列值等关键操作,确保在多用户并发环境下数据的一致性和唯一性。

在数据库中主键的生成一般是通过序列来生成,PG的序列知识主要罗列如下:

1.PG序列的创建

方法a:直接在表中指定字段类型是 SERIAL 类型就一了

CREATE TABLE person (   id   SERIAL,   name TEXT  );
方法b:先创建序列名称,然后在新建的表中列属性指定序列就可以了,该列需INT类型列
CREATE SEQUENCE person_id_seq; 
CREATE TABLE person (   id   INT4 NOT NULL DEFAULT nextval('person_id_seq'),  
                        name TEXT );
2.PG序列的应用
查看当前会话的序列值
SELECT currval('person_id_seq') ;
查看下一个序列值
SELECT nextval('person_id_seq') ;
查看全局的最后一个序列值
select last_value from person_id_seq;
重置序列值
select setval(seq_name,new_seq_value);

3.序列删除当有表字段应用到PG序列时不能直接删除
drop table table_name;
drop sequence seq_name;

4.其他说明
a.currval取得的是当前会话的序列值,在当前会话中该值不会因为其他会话取了nextval而变化。会变化的是全局的last_value值,并且当前会话中如果没有读过nextval值时直接读currval是会报错的。
b.对于序列是由建表时指定serial时创建时,删除该表的同时,对应的序列也会被删除。
c.表主键数据可以用跟表相关的序列,也可以用其他序列,但不推荐,只是PG默认它没错。
d.为使多用户并发下同一个序列取值不会重复,nextval是不会rollback的,不过可以使用setval重置

转载于:https://my.oschina.net/Kenyon/blog/60091

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值