创建视图时的特权

数据库服务器将进行测试以确保您具有执行视图定义中的 SELECT 语句所需的所有特权。如果您不具有那些特权,那么数据库服务器不创建视图。

此项测试确保用户无法通过对某个表创建视图并查询该视图来获取对该表的未经授权的访问权。

创建视图后,数据库服务器至少授予您(您是该视图的创建者和所有者)对它的 Select 特权。 不会对 PUBLIC 进行自动授权,这与新创建表的情况相同。

数据库服务器将测试视图定义以了解视图是否是可修改的。如果是的话,数据库服务器将授予您对该视图的 Insert、Delete 和 Update 特权(如果您对基础表或视图也具有那些特权的话)。换而言之,如果新视图是可修改的,那么数据库服务器将从基础表或视图复制您的 Insert、Delete 和 Update 特权并对新视图授予那些特权。如果您对基础表只具有 Insert 特权,那么您将只接收到对视图的 Insert 特权。

此项测试确保用户无法使用视图来获取对他们尚未具有的任何特权的访问权。

由于无法变更视图或对视图建立索引,所以永远不会授予对视图的 Alter 和 Index 特权。

此部分不适用于远程表上的视图。 远程表上的许可权不能自动传播到那些表上的视图。 例如,要为 PUBLIC 提供对包含远程表上一个或多个列的视图的 Select 存取权,必须明确地对该视图执行 REVOKE ALL FROM PUBLIC,然后明确地为 PUBLIC 授予对该视图的 Select 特权。