3

abc_ のような似たような名前のロールを作成しました。番号は異なりますが、abc_ は常に同じままです。次のクエリで役割を確認できます

select * from pg_roles where rolname like 'abc_%';

しかし、似たような名前のすべてのロールを削除する方法がわかりません。次のクエリがありますが、フルネームが必要です。

DROP ROLE name;

psql から削除しようとしていますが、関数を作成していません。「abc_%」のようなロールを削除するクエリはありますか?

4

1 に答える 1

4

なんらかの動的 SQL を使用しないと、それはできません。動的 SQL を使用してロールを削除する簡単な例:

select 'DROP ROLE ' || rolname || ';' from pg_roles where rolname like 'abc_%';

結果を psql セッションに貼り付けたくない場合は、あるセッションから別のセッションにパイプすることもできます。

psql -d yourdb -U youruser -qtAc "select 'DROP ROLE ' || rolname || ';' from pg_roles where rolname like 'abc_%'" | psql -d yourdb -U youruser
于 2013-07-25T15:04:21.540 に答える