【问题标题】:postgresql delete role with similar namespostgresql 删除具有相似名称的角色
【发布时间】:2013-07-25 05:43:02
【问题描述】:

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

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

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

DROP ROLE name;

我正在尝试从 psql 中删除并且我没有编写任何函数。是否有任何查询可以删除我可以拥有的角色,例如“abc_%”?

【问题讨论】:

    标签: postgresql roles postgresql-9.2 psql


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-22
      • 1970-01-01
      • 1970-01-01
      • 2019-06-02
      • 1970-01-01
      • 2015-04-25
      相关资源
      最近更新 更多