То, что вам не хватает, состоит в том, что мы можем предоставить UPDATE для подмножества столбцов таблицы.
Прежде всего, давайте просто выделим SELECT на столе. Значение UPDATE_PRIV это 'N', для None:
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', предположительно, для Некоторые:
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 является 'А', для Все:
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>
Есть ли причина, по которой вам нужно использовать представление 'table_privileges'? Было бы гораздо чаще использовать 'dba_tab_privs' (или' all_tab_privs ') и 'role_tab_privs' для проверки привилегий на уровне таблиц. Я считаю, что 'table_privileges' несколько определен в стандарте SQL, поэтому, возможно, вы пытаетесь получить некоторый уровень независимости базы данных, но, глядя на документацию для представления table_privileges в различных базах данных, не кажется, что набор столбцов одинаково у поставщиков баз данных, поэтому я не уверен, что он вам что-то покупает. –
Нет, я просто наткнулся на инструкцию, используя table_privileges. спасибо за совет;) –