本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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
';