|
|
| _IV_LOCKS | Systémové dotazy | _IV_PROFILE |
Systémový informační dotaz _iv_subject_membership vrací informaci o náležení uživatelů do skupin a o obsazení uživatelů a skupin do rolí.
Uživatelé, skupiny a role jsou subjekty práv a jejich vzájemné náležení a obsazení ovlivňuje efektivní práva uživatelů.
Každý záznam v odpovědi na tento dotaz popisuje jeden vztah náležení nebo obsazení mezi dvojicí subjektů. Oba subjekty jsou charakterizovány redundantně. Pro kategorie subjektů lze použít konstanty CATEG_USER (1), CATEG_GROUP (9) a CATEG_ROLE (10).
| Jméno sloupce | Typ | Obsah |
| subject_name | CHAR(31) | jméno náležejícího subjektu (uživatele nebo skupiny) |
| subject_categ | SMALLINT | kategorie náležejícího subjektu (uživatele nebo skupiny) |
| subject_uuid | BINARY(12) | UUID náležejícího subjektu (uživatele nebo skupiny) |
| subject_objnum | INT | číslo objektu náležejícího subjektu (z tabulky USERTAB) |
| container_name | CHAR(31) | jméno obsahujícího subjektu (skupiny nebo role) |
| container_categ | SMALLINT | kategorie obsahujícího subjektu (skupiny nebo role) |
| container_uuid | BINARY(12) | UUID obsahujícího subjektu (skupiny) |
| container_objnum | INT | číslo objektu obsahujícího subjektu (u skupiny z USERTAB, u role z OBJTAB) |
| container_schema | CHAR(31) | jméno schématu obsahujícího subjektu (role) |
Dotaz na seznam skupin, do nichž patří uživatel David:
SELECT container_name FROM _iv_subject_membership
WHERE subject_name='DAVID' AND subject_categ=CATEG_USER
AND container_categ=CATEG_GROUP
Seznam uživatelů ve skupině Účetní
SELECT subject_name FROM _iv_subject_membership
WHERE container_name='ÚČETNÍ' AND subject_categ=CATEG_USER
AND container_categ=CATEG_GROUP
Seznam subjektů obsazených v roli Author aktuální aplikace
SELECT subject_name,CASE WHEN subject_categ=1 THEN 'User' ELSE 'Group' END AS Categ
FROM _iv_subject_membership
WHERE container_name='AUTHOR' AND container_categ=CATEG_ROLE
AND container_schema=CURRENT_APPLICATION
Podmínka, že uživatel David patří do skupiny Účetní:
EXISTS(SELECT * FROM _iv_subject_membership
WHERE subject_name='DAVID' AND subject_categ=CATEG_USER
AND container_categ=CATEG_GROUP AND container_name='ÚČETNÍ')
| _IV_LOCKS | Systémové dotazy | _IV_PROFILE |