仅用于序列的 Postgres 技术角色

Postgres tech role for sequence only

有角色sequence_owner。这是仅处理序列的特殊技术角色。

create role sequence_owner;
GRANT sequence_owner TO administrator;
GRANT USAGE, SELECT, UPDATE  ON ALL SEQUENCES IN SCHEMA schema1 TO sequence_owner;

还有几个角色为 administrator 的用户:user1,...user42

GRANT administrator TO user1;
GRANT administrator TO user42;

使用 user1 我可以创建序列:

create sequence schema1.test_sequence;

但我无法将所有者更改为特殊 sequence_owner 角色

alter sequence schema1.test_sequence owner to sequence_owner;

有错误: 错误:模式 schema1

的权限被拒绝

我不习惯使用:

GRANT CREATE, USAGE ON SCHEMA schema1 to sequence_owner

因为在这种情况下,这个角色 sequence_owner 将拥有比它必须拥有的更多的特权。

https://www.postgresql.org/docs/11/sql-altersequence.html

不可能: 您必须拥有序列才能使用 ALTER SEQUENCE。要更改序列的架构,您还必须对新架构具有 CREATE 权限。要更改所有者,您还必须是新拥有角色的直接或间接成员,并且该角色必须对序列的架构具有 CREATE 特权。