postgresql删除具有相似名称的角色

时间:2013-07-25 11:01:54

标签: postgresql roles postgresql-9.2 psql

我创建了类似名称的角色,例如abc_,其中数字不同但abc_始终保持相同。我可以通过以下查询看到角色

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

但我不知道如何删除所有具有相似名称的角色。我有以下查询,但它需要全名。

DROP ROLE name;

我正在尝试从psql中删除而我没有编写任何函数。是否有任何查询可以删除我可以拥有的角色'abc _%'?

1 个答案:

答案 0 :(得分:3)

不使用某种动态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