2012-01-12 2 views
5

enter image description hereоракул table_privileges значения

Кто-нибудь знает значения, приведенные в table_privileges? Я уже выяснил, что означает «А». Но я не узнал, что означает «S». Я думаю, что это не задокументировано. Это имеет какое-то отношение к привилегиим обновления для определенных столбцов.

+4

Есть ли причина, по которой вам нужно использовать представление 'table_privileges'? Было бы гораздо чаще использовать 'dba_tab_privs' (или' all_tab_privs ') и 'role_tab_privs' для проверки привилегий на уровне таблиц. Я считаю, что 'table_privileges' несколько определен в стандарте SQL, поэтому, возможно, вы пытаетесь получить некоторый уровень независимости базы данных, но, глядя на документацию для представления table_privileges в различных базах данных, не кажется, что набор столбцов одинаково у поставщиков баз данных, поэтому я не уверен, что он вам что-то покупает. –

+0

Нет, я просто наткнулся на инструкцию, используя table_privileges. спасибо за совет;) –

ответ

3

То, что вам не хватает, состоит в том, что мы можем предоставить 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> 
+0

очень приятно! Спасибо! –

4

Извините, но, заметив an answer, что @JustinCave ответил на этот вопрос еще в 2005 году, я должен его опубликовать.

Из SQL Reference документации на table_privileges

http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96536/ch2486.htm#1318903

«TABLE_PRIVILEGES содержит информацию о грантах на объектах, для которых пользователь является лицо, предоставляющее право, стипендиат, или владелец, или PUBLIC является стипендиат. Данное представление включено для совместимости с Oracle версии 6. Oracle Корпорация рекомендует не использовать это представление. "

Учитывая, что Oracle не рекомендует использовать этот вид, я бы сильно указал , что вместо этого вы используете представление DBA_TAB_PRIVS. Информацию там должно быть немного проще расшифровать.

+0

Приятная находка. По крайней мере, Джастин в 2012 году согласен со своим младшим Я! – APC

+0

@Ben - Слишком плохо, что у молодого я появился лучший Google Fu. Я попытался найти ссылку на 'TABLE_PRIVILEGES' в документации ранее сегодня и был не так успешным, как я был 7 лет назад. –

+0

@JustinCave, ваш Google Fu может ослабевать, но, по-видимому, моя дата у Фу гораздо больше проблем. Я отредактировал этот ответ, поскольку, как вы указали, ваш оригинальный пост был на 6 лет позже, чем я изначально заявил ... doh! – Ben

Смежные вопросы