Postgresql
在 PostgreSQL 9.1 上創建索引時出錯
我有一個過程,使用者 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=>