GaussDB A (DWS) sequence 序列使用注意事项(持续更新)
【摘要】 高斯 sequence 使用心得体会,产品文档的补充
查看库内所有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 可以执行,但不能删除
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)