postgresql序列的使用

创建:

方法1:直接在表中指定字段类型为serial 类型

create table tbl_xulie (id serial, name text);

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

CREATE [ TEMPORARY | TEMP ] SEQUENCE name [ INCREMENT [ BY ] increment ]
    [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]
    [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]
    [ OWNED BY { table.column | NONE } ]

实例:

CREATE sequence tbl_xulie2_id_seq increment BY 1 minvalue 1 NO MAXVALUE START WITH 1;   
CREATE TABLE tbl_xulie2 ( id INT4 NOT NULL DEFAULT nextval ( 'tbl_xulie2_id_seq' ), NAME text );

使用方法2可以自己指定序列名称。

如果使用方法1,系统会自动生成一个序列名称,命名规则是表名_字段名_seq

查看序列属性:

序列信息都存储在pg_class中,pg_class里面各个字段的含义,可以在官网查看。因此可以在pg_class里面查询自己创建的序列的各个属性:

SELECT * FROM "pg_class" "c" WHERE "c"."relkind" = 'S';

修改序列:

ALTER SEQUENCE name [ INCREMENT [ BY ] increment ]
    [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]
    [ START [ WITH ] start ]
    [ RESTART [ [ WITH ] restart ] ]
    [ CACHE cache ] [ [ NO ] CYCLE ]
    [ OWNED BY { table.column | NONE } ]
ALTER SEQUENCE name OWNER TO new_owner
ALTER SEQUENCE name RENAME TO new_name
ALTER SEQUENCE name SET SCHEMA new_schema

删除序列:

DROP SEQUENCE [ IF EXISTS ] name [, ...] [ CASCADE | RESTRICT ]

当有表字段使用到PG序列时,不能直接删除。

注意:

当使用方法1创建序列时,序列名是系统自动生成的,在使用中,上层代码可能会分析命名规则,自己把序列名称拼出来,在一般情况下是没问题的,但是一旦表名被修改,则上层无法生成正确的名称。因此,当修改表名后,需要同步修改序列名,保证序列命名规则与系统默认的一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值