Du kan bruge:
select sequence_schema, sequence_name
from information_schema.sequences;
Det vil returnere en liste over sekvenser tilgængelige til den nuværende bruger, ikke dem, der ejes af ham.
Hvis du vil vise sekvenser ejet af den aktuelle bruger skal du tilmelde dig pg_class
, pg_namespace
og 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;
I Postgres kan en bruger eje objekter (f.eks. sekvenser) i flere skemaer, ikke kun "sin egen", så du skal også tjekke i hvilket skema sekvensen er oprettet.
Flere detaljer i manualen:
- https://www.postgresql.org/docs/ current/static/infoschema-sequences.html
- https://www.postgresql.org/ docs/current/static/catalog-pg-class.html