2013-01-17 197 views

回答

1

如果您要改變每一個對象從角色A到角色B,你可能會喜歡REASSIGN OWNED

REASSIGN OWNED BY A TO B 
+0

我想下面的查詢,但它是拋出一個語法錯誤。我錯過了什麼嗎?將擁有的postgres重新分配給「Arun」; – Arun

+0

你使用什麼具體的查詢?另外,什麼版本的PostgreSQL? –

+0

我用過的查詢是:將擁有的postgres重新分配給「Arun」; (使用pgadmin)。我正在使用版本8.3 – Arun

1

在PostgreSQL(或幾乎任何其他關係型數據庫管理系統)中,我建議查看元數據表(system catalog)。

例子。你想要的所有表:

db => \d pg_tables 
    View "pg_catalog.pg_tables" 
    Column | Type | Modifiers 
-------------+---------+----------- 
schemaname | name | 
tablename | name | 
tableowner | name | 
tablespace | name | 
hasindexes | boolean | 
hasrules | boolean | 
hastriggers | boolean | 
db => select tablename from pg_tables; 

會得到你所有表的列表。您可以使用查詢來構建腳本來更改所需表的所有權。同樣,您可以查詢目錄中的其他視圖/表以獲取其他對象類型(序列,索引,您將其命名)。

+0

非常感謝您的回覆。這會給我所有的表,但其他對象如模式,約束,索引,觸發器等呢?有什麼方法可以列出它們嗎? – Arun

+1

我剛剛更新了答案。看看我發佈的鏈接。 'pg_class'和/或'pg_index'可能是你需要的索引。觸發器的'pg_proc'。 –

2

我想你可能想用REASSIGN OWNED代替。不需要識別所有的對象,只需要識別用戶。

0

如果你能做到的pg_dump和pg_restore的創建一個新的數據庫添加--no-所有者標記在pg_restore上,並且運行pg_restore作爲您希望設置所有權的用戶應該爲此工作。

相關問題