Search notes:

Oracle: Grant privileges on columns

Oracle allows to grant certain privileges on columns.
The privleges that can be granted on columns are: insert, update and references.
connect / as sysdba

create user usr_tab_owner
       identified by pw_1
       default tablespace data
       quota unlimited on data;

create user usr_tab_user
       identified by pw_2;

grant create table, create session to usr_tab_owner;
grant               create session to usr_tab_user ;

connect usr_tab_owner/pw_1;

create table tab_col_grant_test (
    col_1    number,
    col_2    number,
    col_3    number,
    col_4    number
);

grant
   select,
   update(col_2),
   insert(col_2, col_3)
on
   tab_col_grant_test
to
   usr_tab_user;

insert into tab_col_grant_test values(1, 10, 100, 1000);
insert into tab_col_grant_test values(2, 20, 200, 2000);
commit;

connect usr_tab_user/pw_2;

insert into usr_tab_owner.tab_col_grant_test(col_2, col_3) values (11, 111);
update      usr_tab_owner.tab_col_grant_test set col_2 = -1 where col_2 = 1;

connect / as sysdba

select
   column_name,
   privilege,
   grantable,
   common,
   inherited
from
   dba_col_privs
where
   grantor    = 'USR_TAB_OWNER' and
   grantee    = 'USR_TAB_USER'  and
   table_name = 'TAB_COL_GRANT_TEST';

drop user usr_tab_owner cascade;
drop user usr_tab_user  cascade;

Index

Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 8 attempt to write a readonly database in /home/httpd/vhosts/renenyffenegger.ch/php/web-request-database.php:78 Stack trace: #0 /home/httpd/vhosts/renenyffenegger.ch/php/web-request-database.php(78): PDOStatement->execute(Array) #1 /home/httpd/vhosts/renenyffenegger.ch/php/web-request-database.php(30): insert_webrequest_('/notes/developm...', 1758199566, '216.73.216.150', 'Mozilla/5.0 App...', NULL) #2 /home/httpd/vhosts/renenyffenegger.ch/httpsdocs/notes/development/databases/Oracle/objects/tables/columns/grant/index(93): insert_webrequest() #3 {main} thrown in /home/httpd/vhosts/renenyffenegger.ch/php/web-request-database.php on line 78