2

PostgreSQL データベースのあるテーブルから別のテーブルにユーザー権限をコピーすることはできますか? 次のように、ターゲット テーブルの pg_class.relacl 列の値をソース テーブルの値に更新するだけの問題ですか。

UPDATE pg_class
SET relacl=(SELECT relacl FROM pg_class WHERE relname='source_table')
WHERE relname='target_table';

これは機能しているように見えますが、この方法で実行する必要がある可能性のあるものやその他の「落とし穴」が他にありませんか?

返信ありがとうございます。

4

2 に答える 2

4

SQL の代わりにコマンドラインを使用できる場合、より安全な方法は pg_dump を使用することです。

pg_dump dbname -t oldtablename -s \
| egrep '^(GRANT|REVOKE)' \
| sed 's/oldtablename/newtablename/' \
| psql dbname

UNIXサーバーを想定しています。Windows ではpg_dump -s、ファイルに使用し、手動で編集してからデータベースにインポートします。

おそらく、このテーブルが所有するシーケンスへのパーミッションもコピーする必要があるでしょう - pg_dump は機能します。

于 2009-12-01T14:07:03.610 に答える