Когда запускаются скрипты при установке пакета?

Поясните, пожалуйста, какие параметры использовать в SQL-скриптах при установке пакета?

Конкретная ситуация: на PostgreSQL необходимо изменить длину текстового поля, но это поле используется в VIEW. Соответственно, если не предпринять ничего дополнительного, то при установке получаем ошибку:

Terrasoft.Core.DB.DBMetaActionExecuteException: Error "0A000: cannot alter type of a column used by a view or rule" occurred when updating schema structure

Логично хочется перед установкой схемы объекта удалить VIEW. Но Drop view с параметром 'Before Saving Package' не сработал - всё равно в логах та же ошибка.

Как же сделать так, чтобы один скрипт срабатывал ДО установки схем, а второй - ПОСЛЕ?
 

Нравится

7 комментариев

Кроме параметра Тип установки порядок установки sql скриптов больше никак не контролируется.

Полозюков Евгений Петрович пишет:
Кроме параметра Тип установки порядок установки sql скриптов больше никак не контролируется.

А как можно заставить их выполняться в нужный момент? 

Владимир Соколов,

Используйте тип установки, если он не работает так как вам надо и это баг пишите в техподдержку и ждите исправления в следующих версиях.
Обходной вариант разнести их в несколько пакетов и сначала поставить пакет1 потом пакет2.
Вообще я бы не лез в исправление типа поля и создал бы новое поле с нужной длиной и использовал бы его там где надо в логике.

Полозюков Евгений Петрович,

Иногда у клиента бывает, что в стандартные 250 символов не помещается текст, и он просит увеличить до 500... Переделывать всю логику очень лень :)

Поддержка же отмалчивается.

С пакетами идея! А как пакеты объединить потом в одно "дополнение", чтобы высылать одним файлом?

Владимир Соколов,

Исправлять типы полей после того как они уже созданы сложная задача, лучше ее избегать.
В один файл можно самому сархивировать все выгруженные пакеты. Либо выделить несколько пакетов при выгрузке если это делается в интерфейсе конфигурации.
В вашем случае если вы объедините пакеты в один проблема с установкой может остаться. В таком случае перед установкой пакетов надо самостоятельно на бд удалить view, по-другому я не вижу вариантов.
Если нет доступа к бд надо послать скрипты для выполнения перед установкой пакетов тому у кого есть доступ к бд.

Дополнительный вопрос к знающим людям - А скрипты выполняются всегда или только в том случае, если изменились с момента последней установки?

Владимир Соколов,

Можно это проверить самостоятельно поставив пакет несколько раз подряд и посмотрев лог установки.
Я при написании скриптов исхожу из того что скрипты выполняются всегда и поэтому пишутся дополнительные проверки чтобы одна и та же операция не выполнялась несколько раз.
К примеру если вы добавляете записи с помощью insert, перед выполнение необходимо проверить наличие записи с помощью select. Если запись есть insert не выполнять.
Примеры написания скриптов есть в базовых пакетах.

Показать все комментарии