postgres serial创建自增列

  Sequence是数据库中一类特殊的对象,其用于生成唯一数字标识符。一个典型的应用场景就是手动生成一系列主键。Sequence和MySQL中的AUTO_INCREMENT的概念很像。

 

       创建序列Sequence有2种方式:

       第一种,指定列的类型为serial 

       CREATE TABLE table_name( id serial );

Name Storage Size Range
SMALLSERIAL 2 bytes 1 to 32,767
SERIAL 4 bytes 1 to 2,147,483,647
BIGSERIAL 8 bytes 1 to 922,337,2036,854,775,807

     第二种,先创建序列名称,然后在新建的表中列属性指定序列就可以了,该列需int 类型

 create sequence tbl_xulie2_id_seq increment by 1 minvalue 1 no maxvalue start with 1;    


查看序列的名称
select pg_get_serial_sequence('t1', 'id');
默认的序列名称为table_name_column_name_seq。 例如CREATE TABLE table_name( id SERIAL );创建的序列名称为
table_name_id_seq。


查看当前值。多次执行结果相同。需要注意的是这里获取的是本次session中的值,如果该序列在本次session中从来没有生成过新的数据,则
currval会报错。
select currval('tbl_xulie_id_seq');


查看序列下一个的可用值,每次执行后加1
select nextval('tbl_xulie_id_seq');


重置序列的下一个可用值,从其他地方导入数据后可能需要重置序列的初始值
alter sequence tbl_xulie_id_seq restart with 100;


 
posted on 2019-07-31 21:54  lnlvinso  阅读(2222)  评论(1编辑  收藏  举报