|
![]() | Příkaz GRANT | ![]() | SQL příkazy | Příkaz UPDATE | ![]() |
příkaz_REVOKE ::= příkaz_REVOKE_pro_tabulky | příkaz_REVOKE_pro_rutiny
příkaz_REVOKE_pro_tabulky ::= REVOKE [ GRANT OPTION FOR ] výčet_práv ON [schema.]jméno_tabulky
FROM seznam_subjektů [ WHERE podmínka_where ]
výčet_práv ::= ALL [ PRIVILEGES ] | jednotlivé_právo {, jednotlivé_právo }…
jednotlivé_právo ::= DELETE | INSERT | SELECT | UPDATE [( seznam_sloupců )]
| REFERENCES [( seznam_sloupců ) | GRANT ]
seznam_sloupců ::= sloupec { , sloupec }…
seznam_subjektů ::= PUBLIC | subjekt {, subjekt }…
subjekt ::= [ USER ] jméno_uživatele | [ GROUP ] jméno_role | ROLE [schéma. ] jméno_role
příkaz_REVOKE_pro_rutiny ::= REVOKE [ GRANT OPTION FOR ] výčet_práv ON [ PROCEDURE | FUNCTION ]
[schema.]jméno_rutiny FROM seznam_subjektů
výčet_práv ::= ALL [ PRIVILEGES ] | jednotlivé_právo {, jednotlivé_právo }…
jednotlivé_právo ::= EXECUTE | UPDATE
Popis
Příkaz REVOKE odebere pro uživatele, skupiny uživatelů nebo role určené v seznamu_subjektů práva k:
Pro možný konflikt jména tabulky a jména rutiny je rozumné rutiny odlišit slovem PROCEDURE nebo FUNCTION.
Mají-li se odebrat práva k jednotlivým záznamům (tzv. záznamová práva), musí se použít klauzule WHERE s omezující podmínkou na záznamy tabulky jméno_tabulky a současně tabulka musí mít tato práva povolena (při návrhu tabulky).
Ve výčtu_práv definujete, jaká práva se mají odebrat. Použijete-li slovo ALL, odeberou se všechna možná práva k tabulce. Chcete-li odebrat pouze některá práva, jednotlivě je vypíšete a oddělíte čárkami. K dispozici jsou pro tabulky tato práva:
Pro záznamová práva není k dispozici právo INSERT.
Pro rutiny je výčet práv jednodušší:
V seznamu_subjektů určujete, koho (jakých subjektů práva) se odebrání práv týká. Použijete-li slovo PUBLIC, práva se odeberou skupině EVERYBODY. V jiném případě se odeberou těm uživatelům, skupinám a rolím, které jsou uvedeny jmenovitě. Použijete-li jméno skupiny uživatelů (již definované na serveru), odeberou se práva této skupině, tzn. že uživatelé v ní zařazení práva ztratí automaticky (pokud je nemají přidělena explicitně). Pokud u subjektu práva není uvedeno USER, GROUP ani ROLE, pak se jeho jméno hledá nejprve mezi uživateli, pak mezi skupinami.
Uvede-li se klauzule GRANT OPTION FOR, pak uživatelé a skupiny ztratí možnost svá práva poskytovat dalším uživatelům (totéž co GRANT ve výčtu_práv).
Příklad použití:
Všem uživatelům zabraňte v mazání záznamů a editaci čísla pracovníka a jeho platu.
REVOKE DELETE, UPDATE (Plat, Cislo)
ON Zamestan
FROM PUBLIC
Viz
![]() | Příkaz GRANT | ![]() | SQL příkazy | Příkaz UPDATE | ![]() |