Andrei wrote:

просто натолкнулись на грабли, когда в
новых настройках клиенту пришло
измененное поле, а оно уже было
использовано в тригерах.


У клиента - категорически не советую, особенно если его силами или роботом. Дропить тучу процедур по цепочке зависимостей не обязательно, достаточно скомпилировать с единственным exit в теле тех, кто действительно пользует (остальное закомментировать), пересоздать поле и вновь скомпилировать. А замена (но это действительно накрайняк и под контролем) делается так:

0. Шатдауним базу и принимаем меры чтоб не болтались ещё SYSDBA или OWNER-ы.
1. Создаём временное поле с нужной формулой явно указывая тип (тулзы его почему-то на show не показывают, но он есть и важен).
2. Коммитим.
3. Апдейтим rdb$computed_source и rdb$computed_blr нужного поля селектя их значения из временного.
4. Коммитим.
5. Проверяем селектом данных что получили что хотели.
6. Дропаем временное поле.
7. Коммитим.
8. Онлайним базу и запускаем юзеров.

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

--
Regards. Ded.

Ответить