显示表权限

如果您是表的所有者(即,如果您创建了它),则您拥有对那个表的所有权限。否则,您可通过查询系统目录来确定您对于某个表拥有的权限。系统目录由描述数据库结构的系统表构成。对每一表所授予的权限都记录在 systabauth 系统表中。要显示这些权限,您还必须知道该表的唯一标识符编号。在 systables 系统表中指定此编号。要显示对 orders 表授予的权限,您可输入下列 SELECT 语句:
SELECT * FROM systabauth
          WHERE tabid = (SELECT tabid FROM systables
          WHERE tabname = 'orders');
该查询的输出类似于下列示例:
grantorgrantee tabid               tabauth
          
          tfecitmutator  101      su-i-x--
          tfecitprocrustes101     s--idx--
          tfecitpublic   101      s--i-x--

授权者是授予权限的用户。授权者通常是表的所有者,但所有者可为授权者授权了的另一用户。被授权者是将权限授予其的用户,被授权者 public 意味着有 Connect 权限的任何用户。如果您的用户名未出现,则您仅拥有授予给了 public 的那些权限。

tabauth 列指定授予的权限。此列的每一行中的字母是权限名称的首字母,除了 i 表示 Insert 以及 x 表示 Index 之外。在此示例中,public 具有 Select、Insert 和 Index 权限。仅用户 mutator 具有 Update 权限,仅用户 procrustes 具有 Delete 权限。

在数据库服务器为您执行任何操作(例如,执行 DELETE 语句)之前,它都执行类似于前一查询的查询。如果您不是该表的所有者,且如果数据库服务器找不到您的用户名或 public 对该表的必要权限,则它拒绝执行该操作。