GPO ( Grupo de Profissionais Oracle )
A maior comunidade Oracle do Brasil !

Permissão de update em somente uma coluna

Ehhhh, vida bandida. Sempre caímos em velhos dilemas.

Mais uma para não esquecer.

Em sistemas concorrentes, quando há algumas tabelas compartilhadas (também conhecidas como tabelas corporativas), não é raro um dos sistemas precisar efetuar uma atualização somente em uma coluna (geralmente por questões de segurança ou auditoria).

Segue um exemplo do grant.


SQL> desc t1;
 Nome           Nulo?    Tipo
 -------------- -------- ------
 
 C1                      NUMBER
 C2                      NUMBER
 C3                      NUMBER
 
 SQL>

Digamos que o usuário TAMTAM terá acesso irrestrito a tabela e o usuário TAMBEM terá privilégio de SELECT e UPDATE na coluna C2.


SQL> grant all on t1 to TAMTAM;
 
 Concessao bem-sucedida
 
 SQL> grant select on t1 to TAMBEM;
 
 Concessao bem-sucedida
 
 SQL> grant update (c2) on t1 to TAMBEM;
 
 Concessao bem-sucedida

Agora um pequeno exemplo de como essas permissões funcionam, usando os usuários TAMBAM e TAMBEM.


SQL> conn tamtam/tamtam
 
 Connected.
 
 SQL> select * from t1;
 
 no rows selected
 
 SQL> insert into t1 values (1,1,1);
 
 1 row created.
 
 SQL> commit;
 
 Commit complete.
 
 SQL> select * from t1;
 
 C1        C2        C3
 
 ---------- ---------- ----------
 
 1         1         1
 
 SQL> conn tambem/tambem
 
 Connected.
 
 SQL> select * from t1;
 
 C1        C2        C3
 
 ---------- ---------- ----------
 
 1         1         1
 
 SQL> insert into t1 values (2,2,2);
 
 insert into t1 values (2,2,2)
 
 *
 
 ERROR at line 1:
 
 ORA-01031: insufficient privileges
 
 SQL> update t1 set c1=2;
 
 update t1 set c1=2
 
 *
 
 ERROR at line 1:
 
 ORA-01031: insufficient privileges
 
 SQL> update t1 set c2=2;
 
 1 row updated.
 
 SQL> commit;
 
 Commit complete.
 
 SQL> select * from t1;
 
 C1        C2        C3
 
 ---------- ---------- ----------
 
 1         2         1
 
 SQL>

Como demonstrado, o usuário TAMTAM tem acesso irrestrito a tabela e o usuário TAMBEM, permissão de SELECT e UPDATE somente na coluna C2 na mesma tabela.

Share

You may also like...

Deixe um comentário

O seu endereço de e-mail não será publicado.