诊断表上的初始权限

当 START VIOLATIONS TABLE 语句创建诊断表时,在目标表上授予的访问权限集是在诊断表上授予权限的基础。然而,当数据库服务器授予每一类权限时,它遵循下列规则:

下表说明数据库服务器在诊断表上授予每一权限所处的环境。

权限
授予权限的条件
Insert
如果用户在目标表的任何列上有 Insert、Delete 或 Update 权限,则用户有在诊断表上的 Insert 权限。
Delete
如果用户在目标表的任何列上有 Insert、Delete 或 Update 权限,则用户在诊断表上有 Delete 权限。
Select
如果用户在目标表的任何列上有 Select 权限,则用户在诊断表上有 Select 权限。
Update
如果用户在目标表中的任何列上有 Update 权限,则用户在诊断表上有 Update 权限。
Index
如果用户在目标表上有 Index 权限,则用户在诊断表上有 Index 权限。
Alter
不在诊断表上授予 Alter 权限。

(用户不可更改诊断表的模式。)

References
不在诊断表上授予 References 权限。

(用户不可在诊断表上定义引用的约束。)

下列规则涉及在诊断表上的访问权限:
下一示例展示如何从目标表上的当前权限推导出诊断表上的权限的初始集。 假设您有持有 customer 数据的名为 cust_subset 的表。此表由下列列组成:ssn (社保编号)、fname(名)、lname(姓)和 city(客户生活的城市)。在 cust_subset 表上存在下列访问权限集:
现在,用户 alvincust_subset 表启动名为 cust_subset_viols 的违反表和名为 cust_subset_diags 的诊断表:
START VIOLATIONS TABLE FOR cust_subset
        USING cust_subset_viols, cust_subset_diags;
数据库服务器在 cust_subset_diags 诊断表上授予下列初始的权限集: