首页 > 解决方案 > 在 Postgres 中共享来自 2 个用户的序列

问题描述

在数据库服务器 Postgres 9.x 或 Postgres 10.x 中,我可以从 2 个用户共享相同的序列吗?

例如在同一个数据库 dbTest 中有 2 个模式

  1. userA 是模式所有者 schemaA 具有序列 A
  2. userB 是架构所有者 schemaB

userB 可以使用 sequenceA 序列吗?什么是许可证?

解决后有以下情况:

userA: select nextval('sequenceA');
userB: select nextval('schemaA.sequenceA');

如果我也想要 userB:选择 nextval('sequenceA');

有解决办法吗?

标签: postgresqldatabase-sequence

解决方案


您在描述中对“schema”和“db”的使用有点难以理解,但以上仅适用于同一个数据库。


以下仅适用于模式(在同一数据库中)。

如手册中所述,您需要授予序列的 USAGE 权限:

grant usage on sequence schema_a.sequencea to userb;

如果您想允许userb更新当前值(通过setval()),您还需要授予update权限。


推荐阅读