HAS_TABLE_PRIVILEGE - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

HAS_TABLE_PRIVILEGE

如果使用者具有指定之資料表的指定權限,則傳回 true,否則傳回 false

語法

注意

這是領導者節點函數。此函數在參考使用者建立的資料表、STL 或 STV 系統資料表,或 SVV 或 SVL 系統檢視時會傳回錯誤。如需權限的相關資訊,請參閱 GRANT

has_table_privilege( [ user, ] table, privilege)

引數

使用者

要檢查資料表權限的使用者名稱。預設值是檢查目前使用者。

表格

與權限相關聯的資料表。

privilege

要檢查的權限。有效值如下:

  • SELECT

  • INSERT

  • UPDATE

  • DELETE

  • 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';