두 개의 Postgresql 데이터베이스 그룹 인 "authors"및 "editors"와 두 명의 사용자 "maxwell"및 "ernest"가 있다고 가정하겠습니다.
create role authors;
create role editors;
create user maxwell;
create user ernest;
grant authors to editors; --editors can do what authors can do
grant editors to maxwell; --maxwell is an editor
grant authors to ernest; --ernest is an author
maxwell이 속한 역할 (바람직하게는 그들의 역할) 목록을 반환하는 수행자 함수를 작성하고 싶습니다.
create or replace function get_all_roles() returns oid[] ...
맥스웰, 저자 및 편집자에 대한 OID를 반환해야합니다.
그러나 상속이있을 때 어떻게 해야할지 모르겠습니다.
pg_has_role()
재귀 쿼리보다 약간 빠르기 때문에 중요하지 않습니다. 그러나 마지막 한 가지는 슈퍼 슈퍼에 대한 모든 역할을 반환 하며 이는 반가운 부작용 일 수 있습니다. 결과가 내 쿼리와 다른 곳입니다.