PostgreSQL 序列使用
发布时间:2020-12-13 18:23:01 所属栏目:百科 来源:网络整理
导读:在数据库中主键的生成一般是通过序列来生成,PG的序列知识主要罗列如下: 1.PG序列的创建 方法a:直接在表中指定字段类型是 SERIAL 类型就一了 CREATE TABLE person ( id SERIAL,name TEXT ); 方法b:先创建序列名称,然后在新建的表中列属性指定序列就可以
在数据库中主键的生成一般是通过序列来生成,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序列时不能直接删除 4.其他说明 a.currval取得的是当前会话的序列值,在当前会话中该值不会因为其他会话取了nextval而变化。会变化的是全局的last_value值,并且当前会话中如果没有读过nextval值时直接读currval是会报错的。 b.对于序列是由建表时指定serial时创建时,删除该表的同时,对应的序列也会被删除。 c.表主键数据可以用跟表相关的序列,也可以用其他序列,但不推荐,只是PG默认它没错。 d.为使多用户并发下同一个序列取值不会重复,nextval是不会rollback的,不过可以使用setval重置 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |