Du kan använda:
select sequence_schema, sequence_name
from information_schema.sequences;
Det kommer att returnera en lista med sekvenser som är tillgängliga till den nuvarande användaren, inte de som ägs av honom.
Om du vill lista sekvenser som ägs av den aktuella användaren måste du gå med i pg_class
, pg_namespace
och 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 användare äga objekt (t.ex. sekvenser) i flera scheman, inte bara "hans egna", så du måste också kontrollera i vilket schema sekvensen skapas.
Mer information i manualen:
- https://www.postgresql.org/docs/ current/static/infoschema-sequences.html
- https://www.postgresql.org/ docs/current/static/catalog-pg-class.html