Sie können Folgendes verwenden:
select sequence_schema, sequence_name
from information_schema.sequences;
Das gibt eine Liste von zugänglichen Sequenzen zurück an den aktuellen Benutzer, nicht an diejenigen, die im Besitz sind von ihm.
Wenn Sie Sequenzen im Besitz auflisten möchten vom aktuellen Benutzer müssen Sie pg_class
beitreten , pg_namespace
und pg_user
:
select n.nspname as sequence_schema,
c.relname as sequence_name,
u.usename as owner
from pg_class c
join pg_namespace n on n.oid = c.relnamespace
join pg_user u on u.usesysid = c.relowner
where c.relkind = 'S'
and u.usename = current_user;
In Postgres kann ein Benutzer Objekte (z. B. Sequenzen) in mehreren Schemas besitzen, nicht nur „sein eigenes“, daher müssen Sie auch prüfen, in welchem Schema die Sequenz erstellt wird.
Mehr Details im Handbuch:
- https://www.postgresql.org/docs/ current/static/infoschema-sequences.html
- https://www.postgresql.org/ docs/current/static/catalog-pg-class.html