HAS_TABLE_PRIVILEGE - Amazon Redshift

HAS_TABLE_PRIVILEGE

如果用户对指定的表具有指定特权,则返回 true,否则返回 false

语法

注意

这是领导节点函数。如果此函数引用了用户创建的表、STL/STV 系统表或 SVV/SVL 系统视图,它将返回错误。有关权限的更多信息,请参阅 GRANT

has_table_privilege( [ user, ] table, privilege)

参数

用户

要接受表特权检查的用户的名称。默认为检查当前用户。

table

与特权关联的表。

privilege

要检查的特权。有效值如下所示:

  • SELECT

  • INSERT

  • UPDATE

  • 删除

  • DROP

  • REFERENCES

返回类型

BOOLEAN

示例

以下查询发现 GUEST 用户对 LISTING 表没有 SELECT 特权。

select has_table_privilege('guest', 'listing', 'select'); has_table_privilege --------------------- false

以下查询使用 pg_tables 和 pg_user 目录表的输出来列出表权限,包括选择、插入、更新和删除。这只是一个示例。您可能需要指定数据库中的架构名称和表名。有关更多信息,请参阅 查询目录表

SELECT tablename ,usename ,HAS_TABLE_PRIVILEGE(users.usename, tablename, 'select') AS sel ,HAS_TABLE_PRIVILEGE(users.usename, tablename, 'insert') AS ins ,HAS_TABLE_PRIVILEGE(users.usename, tablename, 'update') AS upd ,HAS_TABLE_PRIVILEGE(users.usename, tablename, 'delete') AS del FROM (SELECT * from pg_tables WHERE schemaname = 'public' and tablename in ('event','listing')) as tables ,(SELECT * FROM pg_user) AS users; tablename | usename | sel | ins | upd | del ----------+-----------+--------+-------+-------+------- event | john | true | true | true | true event | sally | false | false | false | false event | elsa | false | false | false | false listing | john | true | true | true | true listing | sally | false | false | false | false listing | elsa | false | false | false | false

前一个查询还包含交叉联接。有关更多信息,请参阅 JOIN 示例。要查询不在 public 架构中的表,请从 WHERE 子句中删除 schemaname 条件,并在查询之前使用以下示例。

SET SEARCH_PATH to 'schema_name';