2013-07-25 125 views
0

我创建了类似名称的角色,例如abc_,其中数字会变化,但abc_始终保持不变。我可以看到以下查询的角色postgresql删除类似名称的角色

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

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

DROP ROLE name; 

我想从psql中删除,我不写任何函数。是否有任何查询来放弃角色,我可以像'abc_%'?

回答

2

如果不使用某种类型的动态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