|
![]() | Predikßt Fulltext | ![]() | Podmφnky a predikßty |
Pro zjiÜt∞nφ prßv zadanΘho subjektu prßva k zadanΘ tabulce nebo zßznam∙m tabulky se vyu₧φvß p∞tice predikßt∙ has_select_privil
(pro prßvo Φφst), has_update_privil
(pro prßvo p°episovat), has_delete_privil
(pro prßvo vklßdat zßznamy), has_insert_privil
(pro prßvo mazat zßznamy) a has_grant_privil
(pro prßvo poskytovat svΘ prßvo dalÜφm subjekt∙m).
Prßvo Φφst a prßvo p°episovat se zjiÜ¥uje pro ka₧d² sloupec zvlßÜ¥, ostatnφ prßva pro celou tabulku najednou.
Predikßty se u₧φvajφ jako souΦßst dotazovΘho v²razu SELECT: v²b∞r tabulky ve FROM urΦuje, pro jakou tabulku se prßva zjiÜ¥ujφ, podmφnka ve WHERE stanovφ, u jak²ch zßznam∙ se prßva zjiÜ¥ujφ (mß-li tabulka povolena zßznamovß prßva).
Predikßty majφ nßsledujφcφ formßt:
privil_predikßty ::= predikßty_pro_sloupce | predikßty pro tabulku
predikßty_pro_sloupce ::= { has_select_privil | has_update_privil } ( sloupec, druh [, jmΘno_subjektu, kategorie_subjektu ] )
predikßty_pro_tabulku ::= { has_delete_privil | has_insert_privil | has_grant_privil } ( druh [, jmΘno_subjektu, kategorie_subjektu ] )
druh ::= {0 | 1 | 2}
kategorie_subjektu ::= { CATEG_USER | CATEG_GROUP | CATEG_ROLE }
Popis
U predikßt∙_pro_sloupce se musφ urΦit v₧dy jeden sloupec uveden² v Φßsti SELECT dotazovΘho v²razu, pro n∞j₧ se prßvo zjiÜ¥uje. U ostatnφch predikßt∙ (delete, insert a grant) se neuvßdφ, proto₧e tato prßva se definujφ pro tabulku jako celek.
Podle hodnoty druh se rozliÜuje, jakΘ prßvo se zjiÜ¥uje:
druh | v²znam |
0 | prßva p°id∞lenß zßznamu (nejde pro insert a pro tabulky bez zßznamov²ch prßv) |
1 | prßva p°id∞lenß tabulce |
2 | efektivnφ prßva |
U predikßt∙ je mo₧nΘ uvΘst dvojici parametr∙ jmΘno_subjektu a kategorie_subjektu. Je-li tato dvojice uvedena, zjiÜ¥uje se prßvo tohoto subjektu, nenφ-li uvedena, uva₧uje se p°ihlßÜen² u₧ivatel kladoucφ dotaz. P°i vyhodnocovßnφ se nekontroluje existence zadanΘho subjektu prßva - neexistujφcφ subjekt prßva nemß p°id∞lena.
Efektivnφ prßva v sob∞ zahrnujφ prßva zφskanß nßle₧enφm u₧ivatele do skupin a obsazenφm do rolφ. Nejsou zde zahrnuta zvlßÜtnφ prßva, kterß u₧ivatel mß p°i provßd∞nφ procedur a vyhodnocovßnφ dotaz∙, pro n∞₧ je nastaven administrßtorsk² re₧im provozovßnφ.
Pou₧itφ:
v₧dy jako souΦßst dotazovΘho v²razu SELECT:
SELECT has_select_privil(a,2,"anonymous",CATEG_USER), has_select_privil(b,2,"anonymous",CATEG_USER)
FROM PrivTab
Vypsat prßva ke Φtenφ anonymnφho u₧ivatele ke dv∞ma sloupc∙m tabulky
SELECT has_delete_privil(2,"everybody", CATEG_GROUP) INTO lze_smazat
FROM PrivTab
WHERE a=1;
P°edat do prom∞nnΘ typu BIT p°φznak, mß-li ka₧d² prßvo smazat vybran² zßznam
SELECT *
FROM PrivTab
WHERE has_select_privil(b,2,"junior_user",CATEG_ROLE)
Vypsat jen ty zßznamy, u kter²ch mß role JUNIOR_USER prßvo Φφst sloupec B
Editace prßv
K nastavenφ prßv (p°idßnφ nebo odebrßnφ) pro zadan² subjekt k tabulce nebo k zßznam∙m tabulky se pou₧φvß dvojice SQL p°φkaz∙ GRANT
a REVOKE
.
Viz
![]() | Predikßt Fulltext | ![]() | Podmφnky a predikßty |