![]() |
|
Модераторы: LSD |
![]()
|
|
| Temdegon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.10.2008 Где: Minsk Репутация: нет Всего: 9 |
Нужен запрос, который бы возвращал следующие поля:
схема, таблица, имя primary key поля, Default Value для этого поля (типа nextval('table_id_seq'::regclass)), Y - если в той же схеме есть sequence с именем talbename_pkname_seq или N, если нет такого. В документации нифига не понятно. Кое-как написал запрос без последнего поля, но он получился просто огромный и выполняется очень долго. Помогите плиз, кто хорошо разбирается во всех этих pg_class, pg_catalog, pg_attribute и т.п. страшных вещах. |
|||
|
||||
| Temdegon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.10.2008 Где: Minsk Репутация: нет Всего: 9 |
В общем прелюдия такая:
есть сервер с парой тысяч таблиц. Есть пара сотен точно таких же серверов, с такой же структурой БД. Все изменения в структуре прогоняются на всех серверах. Время от времени структура БД синхронизируется на всех серверах. Но не все идеально и не все делается добросовестно. Синхронизатор не корректно работает с сиквенсами. ПОставили задачу - написать ПХП-скрипт, который бы находил потенциальные проблемы с default values для primary keys. Список таблиц получить не проблема. Имя поля-primary key для таблицы тоже кое-как разобрался как получать. Дефолт велью для поля тоже получил кое-как. Отдельно список сиквенсов получать умею. Но как связать его со списком таблиц - ума не приложу. Еще столкнулся с проблемой удаления sequence. Убираю default value из поля, которое юзает сиквенс, а дропнуть сиквенс все равно не могу - пишет, что есть зависимость. Как отвязать сиквенс от таблицы, что бы дропнуть. в синтаксисе ALTER SEQUENCE есть опция OWNED BY TABLE|NONE. Но вот поменять это свойство че-то не получается. |
|||
|
||||
| Temdegon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 429 Регистрация: 11.10.2008 Где: Minsk Репутация: нет Всего: 9 |
Собственно вот, кое-как написал:
Выводит все что нужно. Выглядит страшно, но работает. Исполняется достаточно долго при большом кол-ве таблиц. Если кто-то видит пути оптимизации этого запроса - буду очень признателен. |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | PostgreSQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |