Poslední úpravy - Vyhledat:

SQL

O modelování

Power Designer

Oracle Data Modeler

Krátká videa DM

Zdroje...

edit SideBar

SQL /

GRANT

< Řídící příkazy | SQL postupně | REVOKE >

Tímto příkazem přidějujeme nějaké právo nějakému uživateli či roli. Různých možných systémových práv i objektových práv je mnoho, zde ukážeme, jak přidělovat vybraná základní práva k tabulkám a pohledům.

V příkladech předpokládáme, že existují uživatelé KROKODYL1 a KROKODYL2 a že se můžete jako tito uživatelé přihlásit. Eventuelně zaměňte tato uživatelská jména za jiná, která se hodí pro váš případ. Tabulky a pohledy z uvedených příkladů jsou z kapitol CREATE TABLE a CREATE VIEW


Příklad: Přidělte právo INSERT a UPDATE k tabulce TEMA uživateli KROKODYL1.

        grant insert, update on TEMA to KROKODYL1;
Přihlašte se jako KROKODYL1 a vyzkoušejte práva k tabulce <schema_kde_jste_pohled_vytvořili>.TEMA . Asi vám bude chybět právo SELECT...

Příklad: (Přihlašte se k původnímu účtu.) Přidělte právo SELECT k pohledu POCTY_VE_MESTECH uživateli KROKODYL2, dejte mu možnost toto právo postoupit dalším uživatelům.

        grant select on POCTY_VE_MESTECH to KROKODYL2 with grant option;
Klauzule with grant option znamená, že uživatel, kterému je takto právo přiděleno, může ho sám dále přidělit někomu dalšímu.
Opět pod účtem KROKODYL2 vyzkoušejte.

Příklad: (Přihlašte se k původnímu účtu.) Přidělte právo SELECT a UPDATE k pohledu SKYPE_OSOBY uživateli KROKODYL2.

        grant select,update on SKYPE_OSOBY to KROKODYL2;
Nyní můžete vyzkoušet, zda uživatel KROKODYL2 může do sloupce SKYPE pohledu SKYPE_OSOBY vložit práznou hodnotu: přihlašte se jako uživatel KROKODYL2, najděte nějakého ze SKYPE_OSOBY a zjitěte jeho ID.
        update <schema_kde_jste_pohled_vytvořili>.SKYPE_OSOBY set SKYPE=NULL where ID=<zjištěné_ID>;

Grantovat můžeme jen práva, ke kterým máme GRANT OPTION, tedy k objektům, jichž jsme vlastníky, nebo nám bylo přiděleno právo with grant option.

Následuje komplexní příklad na správu práv k jednotlivým záznamům.


Příklad: Tabulka ZAPISY bude uchovávat zápisy různých uživatelů, jejím vlastníkem bude KROKODYL2. Ostatní uživatelé mají vidět jen "své" záznamy. Přihlašte se jako KROKODYL2.

        create table ZAPISY (
        IDZAP int,
        TEXT CLOB not null,
        UZIV varchar2(100) default USER,
        KDY DATE default sysdate,
        constraint ZAPISY_PK primary key (IDZAP));
(Funkce USER je funkcí Oracle vracející uživatelské jméno přihlášeného uživatele.)
        create sequence ZAPISYID;
(Sekvence je objekt Oracle sloužící k postupnému automatickému generování čísel int.) Pro utomatické generování IDZAP definujeme trigger:
        create or replace trigger ZAPISYIDNOVY before insert on ZAPISY
        for each row
        when (new.IDZAP is null)
        begin
        select ZAPISYID.nextval into :new.IDZAP from dual;
        end;
Na zkoušku vložíme jeden záznam a podíváme se na něj:
        insert into ZAPISY (TEXT) values ('Papala Pepička papáníčko, pokapala si kanapíčko.');
        select * from ZAPISY;
Definujeme pohled ZAPISYU k tomu, aby ukazoval jen zápisy přihlášeného uživatele. Podíváme se "tímto pohledem".
        create view ZAPISYU as
       (select TEXT,KDY from ZAPISY where UZIV=USER)
       with check option;
       select * from ZAPISYU;
Přidělíme uživateli KROKODYL1 práva k pohledu ZAPISYU.
        grant all on ZAPISYU to KROKODYL1;
Přihlašte se jako KROKODYL1. Podíveje se pohledem ZAPISYU.
        select * from KROKODYL2.ZAPISYU;
Nejsou vidět žádné záznamy. Vložíme jeden zápis. Podíváme se.
        insert into KROKODYL2.ZAPISYU (TEXT) values ('Babička dnes nepřijde.');
        select * from KROKODYL2.ZAPISYU;
Přihlašte se opět jako KROKODYL2. Podíváme se.
        select * from ZAPISYU;
        select * from ZAPISY;
Ukliďte po sobě...
        drop table ZAPISY;
        drop sequence ZAPISYID;
        drop view ZAPISYU;

< Řídící příkazy | SQL postupně | REVOKE >

Upravit - Historie - Tisk - Poslední úpravy - Vyhledat
Poslední úprava stránky: 21.10.2009, 17:10