HAS_TABLE_PRIVILEGE - Amazon Redshift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

HAS_TABLE_PRIVILEGE

Gibt true zurück, wenn der Benutzer die bestimmte Berechtigung für die angegebene Tabelle besitzt. Andernfalls wird false zurückgegeben.

Syntax

Anmerkung

Dies ist eine Führungsknotenfunktion. Diese Funktion gibt einen Fehler zurück, wenn sie auf eine vom Benutzer erstellte Tabelle, eine STL STV Systemtabelle SVV oder eine SVL Systemansicht verweist. Weitere Informationen zu Rechten finden Sie in GRANT.

has_table_privilege( [ user, ] table, privilege)

Argumente

user

Der Name des Benutzers, dessen Tabellenberechtigungen überprüft werden sollen. Standardmäßig wird der aktuelle Benutzer überprüft.

Tabelle

Die Tabelle, die mit der Berechtigung verknüpft ist.

privilege

Die Berechtigung, das überprüft werden soll. Gültige Werte:

  • SELECT

  • INSERT

  • UPDATE

  • DELETE

  • DROP

  • REFERENCES

Rückgabetyp

BOOLEAN

Beispiele

Die folgende Abfrage stellt fest, dass der GUEST Benutzer keine SELECT Rechte für die LISTING Tabelle hat.

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

Die folgende Abfrage listet Tabellenberechtigungen auf, einschließlich select, insert, update und delete, wobei die Ausgabe aus den Katalogtabellen pg_tables und pg_user verwendet wird. Dies ist nur ein Beispiel. Möglicherweise müssen Sie einen Schemanamen und Tabellennamen aus Ihrer Datenbank angeben. Weitere Informationen finden Sie unter Abfragen der Katalogtabellen.

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

Die vorherige Abfrage enthält auch einen Cross Join. Weitere Informationen finden Sie unter JOIN-Beispiele. Um Tabellen abzufragen, die nicht im public Schema enthalten sind, entfernen Sie die schemaname Bedingung aus der WHERE Klausel und verwenden Sie vor Ihrer Abfrage das folgende Beispiel.

SET SEARCH_PATH to 'schema_name';