Ans*_*rta 5 postgresql roles postgresql-9.2 psql
我创建了具有类似名称的角色,例如 abc_,其中数字不同,但 abc_ 始终保持不变。我可以通过以下查询查看角色
select * from pg_roles where rolname like 'abc_%';
Run Code Online (Sandbox Code Playgroud)
但我不知道如何删除所有具有相似名称的角色。我有以下查询,但它需要全名。
DROP ROLE name;
Run Code Online (Sandbox Code Playgroud)
我正在尝试从 psql 中删除,但我没有编写任何函数。是否有任何查询要删除我可以拥有的角色,如“abc_%”?
如果不使用某种动态 SQL,你就无法做到这一点。使用动态 SQL 删除角色的简单示例:
select 'DROP ROLE ' || rolname || ';' from pg_roles where rolname like 'abc_%';
Run Code Online (Sandbox Code Playgroud)
如果您不愿意将结果粘贴到 psql 会话中,也可以将其从一个会话通过管道传输到另一个会话。
psql -d yourdb -U youruser -qtAc "select 'DROP ROLE ' || rolname || ';' from pg_roles where rolname like 'abc_%'" | psql -d yourdb -U youruser
Run Code Online (Sandbox Code Playgroud)