Вам не хватает того, что мы можем предоставить UPDATE для подмножества столбцов таблицы.
Прежде всего, давайте просто предоставим SELECT для таблицы. Значение UPDATE_PRIV равно N, для Нет :
SQL> grant select on t23 to mr_x;
Grant succeeded.
SQL> select select_priv, update_priv
2 from table_privileges
3 where table_name = 'T23'
4 /
S U
- -
Y N
SQL>
Теперь, если я предоставлю UPDATE для одного столбца, значением UPDATE_PRIV будет 'S', предположительно для Some :
SQL> grant update (col2) on t23 to mr_x
2 /
Grant succeeded.
SQL> select select_priv, update_priv
2 from table_privileges
3 where table_name = 'T23'
4 /
S U
- -
Y S
SQL>
Наконец, я предоставляю UPDATE для всей таблицы, значение UPDATE_PRIV равно 'A', для All :
SQL> grant update on t23 to mr_x
2 /
Grant succeeded.
SQL> select select_priv, update_priv
2 from table_privileges
3 where table_name = 'T23'
4 /
S U
- -
Y A
SQL>