HAS_TABLE_PRIVILEGE - Amazon Redshift

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