Перечислите все последовательности в дб Пост-ГРЭС 8.1 с SQL

В его самом простом это - просто механизм, который восстанавливает Ваш проект каждый раз, когда регистрация превращена в некоторую систему управления версиями (CVS и т.д.). Это может быть расширено, хотя включать запускающие тесты, полностью до генерации образа CD, монтирования его в VMs, установка продукта и запущение полных тестов на нем.

Это имеет простое преимущество выделения, когда изменения кода повреждают систему как можно раньше. Мало того, что это обнаруживает перерывы в коде, это выделяется, кто вызвал повреждение. Этот психологический эффект является очень эффективным при ободрительном хорошем тестировании до регистрации!

130
задан apelliciari 29 September 2009 в 15:19
поделиться

4 ответа

Следующий запрос дает имена всех последовательностей.

SELECT c.relname FROM pg_class c WHERE c.relkind = 'S';

Обычно последовательность называется $ {table} _id_seq . Простое сопоставление с образцом регулярного выражения даст вам имя таблицы.

Чтобы получить последнее значение последовательности, используйте следующий запрос:

SELECT last_value FROM test_id_seq;
216
ответ дан 24 November 2019 в 00:21
поделиться

после небольшой боли я понял.

лучший способ добиться этого - перечислить все таблицы

select * from pg_tables where schemaname = '<schema_name>'

, а затем для каждой таблицы перечислить все столбцы с атрибутами

select * from information_schema.columns where table_name = '<table_name>'

затем для каждого столбца проверьте, есть ли в нем последовательность

select pg_get_serial_sequence('<table_name>', '<column_name>')

, а затем получите информацию об этой последовательности

select * from <sequence_name>
25
ответ дан 24 November 2019 в 00:21
поделиться

Run: psql -E, and then \ds

54
ответ дан 24 November 2019 в 00:21
поделиться

Частично протестировано, но выглядит в основном завершенным.

select *
  from (select n.nspname,c.relname,
               (select substring(pg_catalog.pg_get_expr(d.adbin, d.adrelid) for 128)
                  from pg_catalog.pg_attrdef d
                 where d.adrelid=a.attrelid
                   and d.adnum=a.attnum
                   and a.atthasdef) as def
          from pg_class c, pg_attribute a, pg_namespace n
         where c.relkind='r'
           and c.oid=a.attrelid
           and n.oid=c.relnamespace
           and a.atthasdef
           and a.atttypid=20) x
 where x.def ~ '^nextval'
 order by nspname,relname;

Кредит, за который следует воздать должное ... он частично реконструирован из записанного в журнал SQL из a \ d известной таблицы, имеющей последовательность. Я уверен, что он тоже мог бы быть чище, но эй,

1
ответ дан 24 November 2019 в 00:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: