查看库内所有sequence
SELECT * FROM pg_class c WHERE c.relkind = 'S' and relname ='serial';
Sequence 赋权的使用注意事项:
- 关联具体表的sequence,不能将owner 权限赋予其他用户。
案例:
CREATE TABLE test.customer_address
(
ca_address_sk integer not null,
ca_address_id char(16) not null,
ca_street_number char(10) ,
ca_street_name varchar(60) ,
ca_street_type char(15) ,
ca_suite_number char(10) ,
ca_city varchar(60) ,
ca_county varchar(30) ,
ca_state char(2) ,
ca_zip char(10) ,
ca_country varchar(20) ,
ca_gmt_offset decimal(5,2) ,
ca_location_type char(20)
) ;
CREATE SEQUENCE test.serial1
START 101
CACHE 20
OWNED BY test.customer_address.ca_address_sk;
alter SEQUENCE test.serial1 OWNER TO cbgdm_w;
2.关联的用户的new_owner 必须是间接或者直接用户
所谓直接用户和间接用户:
grant cbgdm_w to disapp;
这样cbgdm_w就是disapp的直接成员;
grant cbgdm_w to cbgdm_etl
这样cbgdm_w就是cbgdm_etl的直接成员,cbgdm_etl是disapp的间接成员。
即就是要继承祖先角色的权限。不然会报错
3.间接用户、直接用户必须是同一逻辑集群
如果cbgdm_w 与 cbgdm_etl 不在同一个逻辑集群。配置直接用户,间接用户的时候会报错。
4.创建 Sequence 如果带了cache ,新旧用户nextval的时候会有不同
例子:
CREATE SEQUENCE test.serial1
START 101
CACHE 20
比如 旧用户 查询时结果是
SELECT nextval('test.serial1');
结果:
101
新用户的查询的结果是
SELECT nextval('test.serial1');
结果:
121
5.Sequence 转换owner 之后, 旧owner 可以执行,但不能删除