HAS_TABLE_PRIVILEGE - Amazon Redshift

HAS_TABLE_PRIVILEGE

Devuelve true si el usuario tiene un privilegio especificado para la tabla especificada; de lo contrario, devuelve false.

Sintaxis

nota

Esta es una función del nodo principal. Esta función devuelve un error si hace referencia a una tabla creada por usuarios, a una tabla de sistema STL o STV, o a una vista de sistema SVV o SVL. Para obtener más información acerca de los privilegios, consulte GRANT.

has_table_privilege( [ user, ] table, privilege)

Argumentos

usuario

El nombre del usuario para verificar los privilegios de la tabla. El valor predeterminado es comprobar el usuario actual.

tabla

Tabla asociada con el privilegio.

privilege

Privilegio por comprobar. Los valores válidos son los siguientes:

  • SELECT

  • INSERT

  • UPDATE

  • DELETE

  • DROP

  • REFERENCES

Tipo de retorno

BOOLEAN

Ejemplos

La siguiente consulta descubre que el usuario GUEST no cuenta con el privilegio SELECT en la tabla LISTING.

select has_table_privilege('guest', 'listing', 'select'); has_table_privilege --------------------- false

La siguiente consulta enumera los privilegios de tabla, incluidos select, insert, update y delete, mediante la salida de las tablas de catálogo pg_tables y pg_user. Se trata solo de un ejemplo. Es posible que deba especificar un nombre de esquema y los nombres de las tablas de su base de datos. Para obtener más información, consulte Consulta de las tablas de catálogos.

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

La consulta anterior también contiene una combinación cruzada. Para obtener más información, consulte Ejemplos de JOIN. Para consultar tablas que no están en el esquema public, elimine la condición schemaname de la cláusula WHERE y utilice el siguiente ejemplo antes de la consulta.

SET SEARCH_PATH to 'schema_name';