有人知道table_privileges中给出的值吗?我已经发现了"A"的含义.但我没有发现"S"代表什么.我认为这没有记录.它与特定列的更新权限有关.
您缺少的是,我们可以对表的列的子集授予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>
Run Code Online (Sandbox Code Playgroud)
现在,如果我在单列上授予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>
Run Code Online (Sandbox Code Playgroud)
最后,我承认对整个表的UPDATE UPDATE_PRIV的值是“A”,为所有:
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>
Run Code Online (Sandbox Code Playgroud)
我很抱歉,但是我注意到@JustinCave在2005年给出了这个问题的回答我必须发布它.
从table_privileges上的SQL Reference文档
http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96536/ch2486.htm#1318903
"TABLE_PRIVILEGES包含有关用户是授予者,被授予者或所有者的对象的授权信息,或者PUBLIC是被授予者.此视图是为了与Oracle V6兼容而包含的.Oracle Corporation建议您不要使用此视图."
鉴于Oracle建议您不要使用此视图,我强烈建议您使用DBA_TAB_PRIVS视图.那里的信息应该更容易破译.