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

5

我创建了一些角色,它们的名称类似于abc_,其中数字不同但abc_始终保持不变。我可以使用以下查询查看这些角色:

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

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

DROP ROLE name;

我正在尝试从psql中删除内容,不需要编写任何函数。是否存在可以删除角色的查询语句,其中我可以使用类似于'abc_%'的通配符?

1个回答

5

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接