HAS_TABLE_PRIVILEGE - Amazon Redshift

HAS_TABLE_PRIVILEGE

ユーザーが、指定されたテーブルに対して指定された権限を持っている場合、true を返し、それ以外の場合は false を返します。

構文

注記

これはリーダーノード関数です。この関数は、ユーザー作成テーブル、STL または STV システムテーブル、SVV または SVL システムビューを参照する場合、エラーを返します。権限の詳細については、「GRANT」を参照してください。

has_table_privilege( [ user, ] table, privilege)

引数

user

テーブルに対する権限を検査するユーザーの名前。デフォルトでは、現在のユーザーが検査されます。

table

権限に関連付けられているテーブル。

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