4.6.4 模式的授权

4.6.4 模式的授权

SQL标准为数据库模式指定了一种基本的授权机制:
只有模式的拥有者才能够执行对模式的任何修改,诸如:

  • 创建或删除关系,
  • 增加或删除关系的属性,
  • 以及增加或删除索引。

references权限

然而,SQL提供了一种references权限,允许用户在创建关系时声明外码。SQLreferences权限可以与update权限类似的方式授予到特定属性上。
下面的grant语句允许用户Mariano创建这样的关系,它能够参照department关系的码dept_name:

1
2
3
grant references(dept_name)
on department
to Mariano;

初看起来,似乎没有理由不允许用户创建参照了其他关系的外码。但是,回想一下外码约束限制了被参照关系上的删除和更新操作。假定Mariano在关系r中创建了一个外码,它参照department关系的dept_name属性,然后在r中插入一条属于Geology系的元组。那么就再也不可能从department关系中将geology系删除,除非同时也修改关系r。这样, Mariano定义的外码限制了其他用户将来的行为;因此,需要有references权限。
继续使用department关系的例子,如果要创建关系r上的check约束,并且该约束有参照department的子查询,那么还需要有department上的references权限。其原因与外码约束的情况类似,因为参照了一个关系的check约束限制了对该关系可能的更新