Questa pagina descrive i privilegi che puoi concedere a un ruolo di database per un controllo granulare degli accessi.
Per ulteriori informazioni sui ruoli dei database e sul controllo dell'accesso granulare, consulta Informazioni sul controllo dell'accesso granulare.
SELECT
Consente al ruolo di eseguire istruzioni SELECT
su una tabella. Se è specificato un elenco di colonne, il privilegio è valido solo per tali colonne. Se non viene specificato alcun elenco di colonne, il privilegio è valido per tutte le colonne della tabella, comprese quelle aggiunte in seguito.
Dopo aver concesso l'autorizzazione
SELECT
a un sottoinsieme di colonne di una tabella, l'utente FGAC non può più utilizzareSELECT *
nella tabella. Le query su questa tabella devono assegnare un nome a tutte le colonne da includere.Il comando
SELECT
concesso su una colonna generata non concedeSELECT
alle colonne base di base.Per le tabelle con interfoliazione, l'elemento
SELECT
concesso nella tabella padre non si propaga alla tabella secondaria.Quando
SELECT
viene utilizzato con una funzione di aggregazione in colonne specifiche, ad esempioSUM(col_a)
, il ruolo deve avere il privilegioSELECT
su tali colonne. Se la funzione aggregata non specifica alcuna colonna, ad esempioCOUNT(*)
, il ruolo deve avere il privilegioSELECT
su almeno una colonna della tabella.
Esempi
GRANT SELECT ON TABLE employees TO ROLE hr_director; GRANT SELECT ON TABLE customers, orders, items TO ROLE account_mgr; GRANT SELECT(name, level, cost_center, location, manager) ON TABLE employees TO ROLE hr_manager; GRANT SELECT(name, address, phone) ON TABLE employees, contractors TO ROLE hr_rep;
Nell'esempio finale precedente, tutte le colonne denominate devono essere presenti in entrambe le tabelle.
INSERT
Consente al ruolo di inserire righe nelle tabelle specificate. Se viene specificato un elenco di colonne, l'autorizzazione è valida solo per tali colonne. Se non viene specificato alcun elenco di colonne, il privilegio è valido per tutte le colonne della tabella.
Se vengono specificati i nomi delle colonne, tutte le colonne non incluse riceveranno il valore predefinito al momento dell'inserimento.
INSERT
non può essere concesso per le colonne generate.
Esempi
GRANT INSERT ON TABLE employees, contractors TO ROLE hr_manager; GRANT INSERT(name, address, phone) ON TABLE employees TO ROLE hr_rep;
UPDATE
Consente al ruolo di aggiornare le righe nelle tabelle specificate. Gli aggiornamenti possono essere limitati a un sottoinsieme di colonne della tabella.
Oltre al privilegio
UPDATE
, il ruolo richiede il privilegioSELECT
su tutte le colonne chiave e in tutte le colonne oggetto di query. Le colonne oggetto di query includono colonne nella clausolaWHERE
e colonne utilizzate per calcolare i nuovi valori delle colonne aggiornate e delle colonne generate.UPDATE
non può essere concesso per le colonne generate.
Esempi
GRANT UPDATE ON TABLE employees, contractors TO ROLE hr_manager; GRANT UPDATE(name, address, phone) ON TABLE employees TO ROLE hr_rep;
DELETE
Consente al ruolo di eliminare righe dalle tabelle specificate.
DELETE
non può essere concessa a livello di colonna.Inoltre il ruolo richiede
SELECT
in tutte le colonne chiave e nelle colonne che potrebbero essere incluse nelle clausoleWHERE
della query.Per le tabelle con interfoliazione, il privilegio
DELETE
è richiesto solo nella tabella padre. Se una tabella secondaria specificaON DELETE CASCADE
, le righe della tabella secondaria vengono eliminate anche senza il privilegioDELETE
nella tabella secondaria.
Esempio
GRANT DELETE ON TABLE employees, contractors TO ROLE admin;
Informazioni dettagliate
Per ulteriori informazioni, vedi: