Postgresql

在 PostgreSQL 9.1 上創建索引時出錯

  • May 10, 2021

我有一個過程,使用者 A 創建一個表,使用者 B 嘗試在 A 擁有的新表上創建一個索引。使用者 A 和 B 來自同一個組,但使用者 B 是一個自動化過程。

是否可以從不是表所有者但在表所有者組中的使用者創建索引?

您需要將表的所有權分配給兩個使用者共有的組。

展示:

設置:

CREATE ROLE thegroup;
CREATE USER user1 IN ROLE thegroup;
CREATE USER user2 IN ROLE thegroup;
CREATE TABLE t1 ( x integer not null );
ALTER TABLE t1 OWNER TO user1;

如果沒有進一步的更改,如果user2嘗試在 上添加索引會發生以下情況t1.x

regress=# SET ROLE user2;
SET
regress=> CREATE INDEX t1_x_idx ON t1(x);
ERROR:  must be owner of relation t1

解決方案是將表所有權授予共享角色。作為user1或超級使用者:

ALTER TABLE t1 OWNER TO thegroup;

現在:

regress=# SET ROLE user2;
SET
regress=> CREATE INDEX t1_x_idx ON t1(x);
CREATE INDEX
regress=> 

引用自:https://dba.stackexchange.com/questions/27380