powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Специфика обновления триггеров в базе данных
25 сообщений из 33, страница 1 из 2
Специфика обновления триггеров в базе данных
    #40094308
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня,

предстоит правка программы миграции базы данных с одно версии на другую.
В частности задача изменить процедуру обновления триггеров.
В принципе понятно что нужно делать но хотелось бы послушать сообщество на тему подводных камней которые могут ждать при обновлении триггеров. Дабы ничего не упустить. Буду признателен за советы и примеры ошибок.

FB2.5.n и FB3.n

Спасибо.
...
Рейтинг: 0 / 0
Специфика обновления триггеров в базе данных
    #40094312
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а где ты там камни нашел?

1. базу в даун.
2. накатить
3. поднять.

зы: и не надо песен про 24/7 - их никто не услышит.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Специфика обновления триггеров в базе данных
    #40094391
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На живую БД или есть окно?

hlopotun> В частности задача изменить процедуру обновления триггеров.

Триггеры отдельно от остальных метаданных обновляются что ли?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Специфика обновления триггеров в базе данных
    #40094398
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
программа миграции это что?
Вашу базу с ODS 11.2 до 12.0 обновляет что ли?
Или это миграция внутренних версий в вашем приложении
...
Рейтинг: 0 / 0
Специфика обновления триггеров в базе данных
    #40094437
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам,

Окно есть.
Триггеры обновляются вместе с остальными метаданными. Но процедуры которые обновляют индексы, хранимые процедуры и прочие метаданные разделены. Собственно поэтому и возникла необходимость править. Внутри довольно много сложной логики т.к. обновление может происходить с различных версий старой программы на последнюю. Всё в принципе нормально работает, но иногда вылазят проблеммы. Напримет при накатывании уникальных индексов обнаруживаются дуплицированные данные итп.
...
Рейтинг: 0 / 0
Специфика обновления триггеров в базе данных
    #40094439
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис
программа миграции это что?
Вашу базу с ODS 11.2 до 12.0 обновляет что ли?
Или это миграция внутренних версий в вашем приложении


это миграция внутренних версий. Но в перспективе и между ODS тоже т.к. готовится переход с FB 2.5.9 na FB3.n.
...
Рейтинг: 0 / 0
Специфика обновления триггеров в базе данных
    #40094445
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun> Триггеры обновляются вместе с остальными метаданными.

Если соблюдать очередность, то проблем быть не должно.


> при накатывании уникальных индексов обнаруживаются
> дуплицированные данные итп.

Какое это имеет отношение к триггерам?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Специфика обновления триггеров в базе данных
    #40094477
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun
Но в перспективе и между ODS тоже т.к. готовится переход с FB 2.5.9 na FB3.n.


А смысл мигрировать на 3.0, если уже есть 4.0? Скоро уже первый корректировочный релиз будет
...
Рейтинг: 0 / 0
Специфика обновления триггеров в базе данных
    #40094521
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гаджимурадов Рустам
hlopotun> Триггеры обновляются вместе с остальными метаданными.
.......
Какое это имеет отношение к триггерам?

к триггерам никакого но с их обновлением тоже возникали проблемы (не всегда происходило обновление). Проблемма была не в ошибках а в логике обновления. Её и надо изменять.
...
Рейтинг: 0 / 0
Специфика обновления триггеров в базе данных
    #40094523
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов Денис
hlopotun
Но в перспективе и между ODS тоже т.к. готовится переход с FB 2.5.9 na FB3.n.


А смысл мигрировать на 3.0, если уже есть 4.0? Скоро уже первый корректировочный релиз будет

тут куча внутренних фреймворков которые к 4й версии не адаптированы и ещё даже не начинали тестироваться с ней.
На 4ю версию походу перейдём когда уже будет готова 5я версия.
Тут большой продукт, всё медленно происходит.
...
Рейтинг: 0 / 0
Специфика обновления триггеров в базе данных
    #40094586
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun> к триггерам никакого
hlopotun> Проблемма была ... в логике обновления.
hlopotun> Её и надо изменять.

Я даже не знаю, что тебе сказать.
Если логика неправильная, то её
надо исправить на правильную.

Внезапно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Специфика обновления триггеров в базе данных
    #40094621
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hlopotun
процедуры которые обновляют индексы, хранимые процедуры и прочие метаданные разделены. Собственно поэтому и возникла необходимость править. Внутри довольно много сложной логики т.к. обновление может происходить с различных версий старой программы на последнюю.

IBEScript.dll, и вперёд.
DB Comparer из IBExpert -> скрипт обновления.
У меня ПК идет набор скриптов, если надо - накатываются последовательно все версии, с нужной по текущую. В базе хранится № текущей версии структуры.
Столько лет уже схема работает.
...
Рейтинг: 0 / 0
Специфика обновления триггеров в базе данных
    #40094622
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ъъъъъ
hlopotun
процедуры которые обновляют индексы, хранимые процедуры и прочие метаданные разделены. Собственно поэтому и возникла необходимость править. Внутри довольно много сложной логики т.к. обновление может происходить с различных версий старой программы на последнюю.

IBEScript.dll, и вперёд.
DB Comparer из IBExpert -> скрипт обновления.
У меня ПК идет набор скриптов, если надо - накатываются последовательно все версии, с нужной по текущую. В базе хранится № текущей версии структуры.
Столько лет уже схема работает.
...
Рейтинг: 0 / 0
Специфика обновления триггеров в базе данных
    #40094680
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun
Гаджимурадов Рустам
hlopotun> Триггеры обновляются вместе с остальными метаданными.
.......
Какое это имеет отношение к триггерам?

к триггерам никакого но с их обновлением тоже возникали проблемы (не всегда происходило обновление). Проблемма была не в ошибках а в логике обновления. Её и надо изменять.


не происходило обновление - это как?
...
Рейтинг: 0 / 0
Специфика обновления триггеров в базе данных
    #40094707
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pastor
hlopotun
пропущено...

к триггерам никакого но с их обновлением тоже возникали проблемы (не всегда происходило обновление). Проблемма была не в ошибках а в логике обновления. Её и надо изменять.


не происходило обновление - это как?

правильнее сказать не производилось обновление некоторых триггеров.
...
Рейтинг: 0 / 0
Специфика обновления триггеров в базе данных
    #40094714
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Хоть пытайте, ставьте к стенке - всё равно не изменить безумных нас"?
Вот прямо так и происходило?
...
Рейтинг: 0 / 0
Специфика обновления триггеров в базе данных
    #40094720
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ъъъъъ
ъъъъъ
пропущено...

IBEScript.dll, и вперёд.
DB Comparer из IBExpert -> скрипт обновления.
У меня ПК идет набор скриптов, если надо - накатываются последовательно все версии, с нужной по текущую. В базе хранится № текущей версии структуры.
Столько лет уже схема работает.


а если предполагается миграция данных из одних таблиц в другие я так понимаю допиливать скрипты вручную
...
Рейтинг: 0 / 0
Специфика обновления триггеров в базе данных
    #40094742
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun
pastor
пропущено...


не происходило обновление - это как?

правильнее сказать не производилось обновление некоторых триггеров.


без сообщений об ошибках?

как выяснили?
...
Рейтинг: 0 / 0
Специфика обновления триггеров в базе данных
    #40094758
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вся проблема в том, что в даной программе только частично обновление происходит через скрипты.
Исторически так сложилось (софт уже более 20 лет существует и развивается) что к примеру структура таблиц динамически формируется из из структуры обьектов. Раньше это было нужно для работы с таблицами paradox. Сейчас завершается переход от смешаных данных (paradox + firebird) только на firebird. Но полностью отказаться от старого кода возможности нет т.к. ещё не все клиенты мигрировали на полностью основанную на firebird базу. При инсталляции, по мере перевода модулей основной программы на firebird, осуществляется миграция данных из paradox в firebird. Делает это своя программа миграции, которая также вносит необходимые изменения и в метаданные firebird. Программа сначала накатывает скрипт который удаляет индексы и хранимые процедуры которые могут помешать обновлению (т.к. сушествуют зависимости к примеру). Далее делает резервную копию метаданных индексов и хранимых процедур которые в скрипте удаления не присутствуют и удаляет их тоже, далее меняется структура таблиц если это необходимо, производится миграция данных и делее накатывается скрипт создания индексов и хранимых процедур и далее скрипт из резервной копии созданной в начале (тут есть ошибка в очерёдности, по идее надо сначала накатывать скрипт из резервной копии а потом скрипт обновления, т.к. есть вероятность перезаписи новых хранимок старыми из резервной копии но поскольку до сих пор удавалось все хранимки запихивать в скрипт обновления и в скрипт резервной копии ничего не попадало проблема не поправлена.
До этого момента обновление триггеров производилось только если производилось изменение структуры таблиц сейчас поставлена задача делать это всегда, т.е. удалять сначала все триггеры и потом из создавать заново при каждой инсталляции. Если это делать двумя скриптами то особых проблем нет, но если по той же схеме как с хранимыми процедурами во возникнет проблема очерёдности создания триггеров т.к. она понятно играет важную роль. Соотв возникает вопрос: Есть ли возможность получая исходный код скриптов из базы сделать это в том же порядке как они туда попадали? Было бы удобно сортировать их по ID но у RDB$TRIGGERS такого ID нет. Можно конечно тупо вызвать этот список в неотсортированном виде и по идее этот порядок должен совпадать с тем порядком в котором они вносились но терзают сомнения будет ли это правильным решением.
В данный момент я больше склоняюсь к решению делать всё только через скрипт но было бы интересно прояснить для себя вопрос получения очерёдности создания триггеров.

п.с. я понимаю что то что я описал вверху полная лажа с точки зрения правильного обновления метаданных в firebird но сделано это задолго до меня и изменить одним махом не получится. Делать прийдётся постепенно и частями.
...
Рейтинг: 0 / 0
Специфика обновления триггеров в базе данных
    #40094767
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun

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


Зачем тащить их из старой базы?
Что мешает создать все заново?
...
Рейтинг: 0 / 0
Специфика обновления триггеров в базе данных
    #40094769
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
pastor
hlopotun

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


Зачем тащить их из старой базы?
Что мешает создать все заново?

ничто не мешает, поэтому так и планируется сделать.
...
Рейтинг: 0 / 0
Специфика обновления триггеров в базе данных
    #40094774
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что за проблема с очередностью создания триггеров? Первый раз о таком слышу.
Триггеры вообще чуть ли не самые простые объекты в плане зависимостей, так что создавать их можно скопом в конце и в любом порядке.
...
Рейтинг: 0 / 0
Специфика обновления триггеров в базе данных
    #40094782
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotun,

триггеры надо создавать в последнюю очередь, так как от них зависимостей нет совсем.
А вот сами триггеры могут зависеть от чего угодно.
Порядок создания триггеров не важен.
...
Рейтинг: 0 / 0
Специфика обновления триггеров в базе данных
    #40094784
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hlopotunтак и планируется сделать.

Ну так делай уже. Это же примитивная работа уровня Search-and-Replace,
студент-практикант для неё самое то.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Специфика обновления триггеров в базе данных
    #40094788
hlopotun
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov,

собственно и делаем :) Не студенты конечно, но кто есть.
Топик затеян на случай, вдруг вылезет что то о чём не подумали.
Например упоминание о сравнении баз в IB Expert и генерация скрипта синхронизации натолкнуло на интересные мысли где это можно применить.
Лучше подискутировать чем потом недочёты править.
...
Рейтинг: 0 / 0
25 сообщений из 33, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Специфика обновления триггеров в базе данных
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]