Как просмотреть информацию о владении новой последовательностью в Postgres после использования ALTER SEQUENCE? - PullRequest
3 голосов
/ 28 марта 2012

Я использую «Последовательность ALTER SEQUENCE OWNED BY table.column» для изменения ассоциации последовательностей в Postgres Есть ли способ просмотреть эту новую информацию, используя \ ds или что-то подобное? \ ds по-прежнему показывает владельца таблицы в качестве владельца последовательности.

Ответы [ 2 ]

3 голосов
/ 14 июля 2013
SELECT c.relname,u.usename 
  FROM pg_class c, pg_user u
 WHERE c.relowner = u.usesysid and c.relkind = 'S'
   AND relnamespace IN (
                        SELECT oid
                          FROM pg_namespace
                         WHERE nspname NOT LIKE 'pg_%'
                           AND nspname != 'information_schema'
                        );
3 голосов
/ 28 марта 2012

OWNED BY table.column изменяет связанный столбец;OWNER TO newowner меняет роль, которой принадлежит последовательность.Роль владельца - это то, что отображается в \ds.Я не знаю команду psql, чтобы увидеть связанный столбец последовательности.OWNED BY в основном используется для каскадного удаления связанной последовательности при удалении референтного столбца.

Вы можете получить видимость в столбце владения по, создав запрос к таблицам системного каталога pg_class , pg_depend и pg_attribute .Я не уверен во всей точной семантике pg_depend, но этот запрос должен показать вам зависимость столбца последовательности:

select tab.relname as tabname, attr.attname as column
from pg_class as seq
join pg_depend as dep on (seq.relfilenode = dep.objid)
join pg_class as tab on (dep.refobjid = tab.relfilenode)
join pg_attribute as attr on (attr.attnum = dep.refobjsubid and attr.attrelid = dep.refobjid)
where seq.relname = 'sequence';
...