REVOKE

Name

REVOKE  --  删除访问权限.

Synopsis

REVOKE { { SELECT | INSERT | UPDATE | DELETE | RULE | REFERENCES | TRIGGER }
    [,...] | ALL [ PRIVILEGES ] }
    ON [ TABLE ] object [, ...]
    FROM { username | GROUP groupname | PUBLIC } [, ...]

REVOKE { EXECUTE | ALL [ PRIVILEGES ] }
    ON FUNCTION funcname ([type, ...]) [, ...]
    FROM { username | GROUP groupname | PUBLIC } [, ...]

REVOKE { USAGE | ALL [ PRIVILEGES ] }
    ON LANGUAGE langname [, ...]
    FROM { username | GROUP groupname | PUBLIC } [, ...]
  

描述

REVOKE 允许一个对象的创建者撤销以前 赋予(别人)的权限,可以是撤销一个或多个用户或者一组用户的权限. 关键字 PUBLIC 代表隐含定义的拥有所有用户的组.

请注意,任何特定的用户都将拥有直接赋予他/她的权限,加上 他/她所处的任何组,以及再加上赋予 PUBLIC 的权限的总和.因此,举例来说,废止 PUBLIC 的 SELECT 权限并不意味着所有用户都失去了对该对象的 SELECT 权限∶ 那些直接得到权限赋予的以及通过一个组得到权限的人仍然拥有该权限.

参阅 GRANT 命令的描述获取权限类型的 含义.

注意

使用 psql\z 命令 显示在一个现存对象上赋予的权限.又见 GRANT 获取关于格式的信息.

例子

撤销公众在表 films 上的插入权限∶

REVOKE INSERT ON films FROM PUBLIC;

废除用户 manuel 对视图 kinds 的所有权限∶

REVOKE ALL PRIVILEGES ON kinds FROM manuel;

兼容性

SQL92

GRANT 命令的兼容性信息基本上也 适用于 REVOKE.语法概要是∶

REVOKE [ GRANT OPTION FOR ] { SELECT | INSERT | UPDATE | DELETE | REFERENCES }
    ON object [ ( column [, ...] ) ]
    FROM { PUBLIC | username [, ...] }
    { RESTRICT | CASCADE }

如果 user1 给予 user2 权限WITH GRANT OPTION, 然后 user2 把它给了 user3,那么 user1 可以用 CASCADE 关键字 废除所有这些权限.如果 user1 给了 user2 WITH GRANT OPTION 权限, 然后 user2 把它给了 user3,然后如果 user1 想撤销这个权限, 但是他声明了 RESTRICT 关键字,那么会失败.

又见

GRANT