602SQL-Úplná dokumentace Index  

Příkaz REVOKE (SQL)

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