4.6.4 模式的授权
4.6.4 模式的授权
SQL
标准为数据库模式指定了一种基本的授权机制:
只有模式的拥有者才能够执行对模式的任何修改,诸如:
- 创建或删除关系,
- 增加或删除关系的属性,
- 以及增加或删除索引。
references权限
然而,SQL
提供了一种references
权限,允许用户在创建关系时声明外码。SQL
的references
权限可以与update
权限类似的方式授予到特定属性上。
下面的grant
语句允许用户Mariano
创建这样的关系,它能够参照department
关系的码dept_name
:
1 | grant references(dept_name) |
初看起来,似乎没有理由不允许用户创建参照了其他关系的外码。但是,回想一下外码约束限制了被参照关系上的删除和更新操作。假定Mariano
在关系r中创建了一个外码,它参照department
关系的dept_name
属性,然后在r中插入一条属于Geology
系的元组。那么就再也不可能从department
关系中将geology
系删除,除非同时也修改关系r。这样, Mariano
定义的外码限制了其他用户将来的行为;因此,需要有references
权限。
继续使用department
关系的例子,如果要创建关系r上的check
约束,并且该约束有参照department
的子查询,那么还需要有department
上的references
权限。其原因与外码约束的情况类似,因为参照了一个关系的check
约束限制了对该关系可能的更新