

 Amazon Redshift dejará de admitir la creación de nuevas UDF de Python a partir del parche 198. Las UDF de Python existentes seguirán funcionando hasta el 30 de junio de 2026. Para obtener más información, consulte la [publicación del blog](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/). 

# HAS\$1TABLE\$1PRIVILEGE
<a name="r_HAS_TABLE_PRIVILEGE"></a>

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

## Sintaxis
<a name="r_HAS_TABLE_PRIVILEGE-synopsis"></a>

**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](r_GRANT.md).

```
has_table_privilege( [ user, ] table, privilege)
```

## Argumentos
<a name="r_HAS_TABLE_PRIVILEGE-arguments"></a>

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

 *table*   
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
<a name="r_HAS_TABLE_PRIVILEGE-return-type"></a>

BOOLEANO

## Ejemplos
<a name="r_HAS_TABLE_PRIVILEGE-examples"></a>

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\$1tables y pg\$1user. 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](c_join_PG.md).

```
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](r_Join_examples.md). 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';
```