HAS_TABLE_PRIVILEGE
Retorna true
se o usuário tiver o privilégio especificado para a tabela especificada; caso contrário, retorna false
.
Sintaxe
nota
Essa é uma função do nó de liderança. Essa função retorna um erro se fizer referência a uma tabela criada por usuário, a uma tabela de sistema STL ou STV ou a uma exibição de sistema SVV ou SVL. Para obter mais informações sobre privilégios, consulte GRANT.
has_table_privilege( [ user, ] table, privilege)
Argumentos
- usuário
-
O nome do usuário para verificar os privilégios da tabela. O padrão é verificar o usuário atual.
- tabela
-
Tabela associada ao privilégio.
- privilege
-
Privilégio a verificar. Os valores válidos são os seguintes:
-
SELECT
-
INSERT
-
UPDATE
-
DELETE
-
DROP
-
REFERENCES
-
Tipo de retorno
BOOLEAN
Exemplos
A consulta a seguir descobre que o usuário GUEST não tem privilégio SELECT na tabela LISTING.
select has_table_privilege('guest', 'listing', 'select');
has_table_privilege --------------------- false
A consulta a seguir lista os privilégios da tabela, incluindo seleção, inserção, atualização e exclusão, usando a saída das tabelas de catálogo pg_tables e pg_user. Isso é apenas um exemplo. Talvez seja necessário especificar um nome de esquema e nomes de tabelas do seu banco de dados. Para ter mais informações, consulte Consultar as tabelas de catálogo.
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
A consulta anterior também contém uma junção cruzada. Para ter mais informações, consulte Exemplos de JOIN. Para consultar tabelas que não estão no esquema public
, remova a condição schemaname
da cláusula WHERE e use o exemplo a seguir antes da consulta.
SET SEARCH_PATH to '
schema_name
';