has_table_privilege
を使うのがキモ。
テーブルへのアクセス権限の確認
select
u.usename,
t.schemaname || '.' || t.tablename,
(
select
current_user
) as check_user,
has_table_privilege(u.usename, t.tablename, 'select') AS user_has_select_permission,
has_table_privilege(u.usename, t.tablename, 'insert') AS user_has_insert_permission,
has_table_privilege(u.usename, t.tablename, 'update') AS user_has_update_permission,
has_table_privilege(u.usename, t.tablename, 'delete') AS user_has_delete_permission,
has_table_privilege(u.usename, t.tablename, 'references') AS user_has_references_permission
FROM
pg_user u
CROSS JOIN pg_tables t
WHERE
u.usename = 'usernameを入れる'
and tablename in ('テーブル名を入れる');
ユーザの一覧
select * from pg_user;