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