关于grant
当在表、表值函数或视图上授予对象权限时,权限列表可以包括这些权限中的一个或多个:SELECT、INSERT、DELETE、REFENENCES 或 UPDATE。
在标量值函数上授予的对象权限可以包括 EXECUTE 和 REFERENCES。
为创建引用某个表的 FOREIGN KEY 约束,该表上需要有 REFERENCES 权限。
为使用引用某个对象的 WITH SCHEMABINDING 子句创建 FUNCTION 或 VIEW,该对象上需要有 REFERENCES 权限。
---------------------
这四句话中的REFERENCES 分别指的是什么?
------解决方案--------------------可授予对象的权限有:
SELECT
允许用户对表或视图发出 SELECT 语句。
INSERT
允许用户对表或视图发出 INSERT 语句。
UPDATE
允许用户对表或视图发出 UPDATE 语句。
DELETE
允许用户对表或视图发出 DELETE 语句。
REFERENCES
允许用户对表的主键和唯一列生成外键引用。还用于允许从视图和函数中引用 SCHEMABINDING。
EXECUTE
允许用户对存储过程发出 EXECUTE 语句。
------解决方案--------------------个人理解,REFERENCES 权限的作用有以下情况
1、建立或者修改外键关系,需要有对应表的REFERENCES 权限
2、建立或者修改SCHEMABINDING 选项的函数,必须有所调用的数据库对象的REFERENCES 权限,这里的数据库对象包括表、函数和视图。
3、若要创建或更改在 CONSTRAINT、DEFAULT 子句或计算列定义中引用了用户定义函数的表,用户必须对这些函数有 REFERENCES 权限。
4、建立或者修改SCHEMABINDING 选项的视图,必须有所调用的数据库对象的REFERENCES 权限,这里的数据库对象包括表、函数和视图。