602SQL-Úplná dokumentace Index  

Systémový informační dotaz _IV_SUBJECT_MEMBERSHIP

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).

Popis sloupců

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)

Příklady

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Í')

Viz