对视图的权限

您对表或列必须至少有 Select 权限来创建在那个表上的视图。对那些在当前数据库中仅引用表的视图,如果视图所有者失去对该视图的任何基本表的 Select 权限,则删除该视图。

您对该视图有的权限与您对为该视图提供数据的一表或多表的权限相同。例如,如果您从仅有 Select 权限的表创建视图,则您可从该视图选择数据,但不可删除或更新数据。要获取更多关于如何创建视图的信息,请参阅 CREATE VIEW 语句

当您创建视图时,PUBLIC 不会自动地获得对您创建的视图的任何权限。仅有您有权通过那个视图访问表数据。即使是对该视图的基本表有权限的用户,也不会自动地获得对该视图的权限。

仅当您是底层基本表的所有者,或您获得了对基本表的这些权限有权授予那些(通过 WITH GRANT OPTION 关键字指定的)权限,您才可对视图授予(或取消)权限。您必须在自己的权限之内明确地授予那些权限,因为在创建视图时,PUBLIC 没有自动地获得对它的任何权限。

视图的创建者可明确地将对该视图的 Select、Insert、Delete 和 Update 权限授予其他用户或授予一角色。您不可对视图授予 Index、Alter、Under 或 References 权限(也不可指定视图的 ALL 关键字,因为 ALL 包含 Index、References 和 Alter 权限)。

当 GRANT 或 REVOKE 语句更改对任何表的自主访问权限,而现有视图的定义中引用该表,则数据库服务器不自动地将那些权限变更应用到该视图。要将新表访问权限应用到依赖于那一表的视图,您可使用 DROP VIEW 和 CREATE VIEW 语句来删除并重新创建该视图。

在此情况下,如果其他视图的定义引用您删除的视图,或如果在那一视图上定义了 INSTEAD OF 触发器,则您还可使用 CREATE VIEW 和 CREATE TRIGGER 语句来分别重新创建那些由 DROP VIEW 语句破坏的相依赖的视图和 INSTEAD OF 触发器。