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, 15:10