Поясните, пожалуйста, какие параметры использовать в 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' не сработал - всё равно в логах та же ошибка.
Как же сделать так, чтобы один скрипт срабатывал ДО установки схем, а второй - ПОСЛЕ?
Нравится
Владимир Соколов,
Используйте тип установки, если он не работает так как вам надо и это баг пишите в техподдержку и ждите исправления в следующих версиях.
Обходной вариант разнести их в несколько пакетов и сначала поставить пакет1 потом пакет2.
Вообще я бы не лез в исправление типа поля и создал бы новое поле с нужной длиной и использовал бы его там где надо в логике.
Кроме параметра Тип установки порядок установки sql скриптов больше никак не контролируется.
Полозюков Евгений Петрович пишет:
Кроме параметра Тип установки порядок установки sql скриптов больше никак не контролируется.
А как можно заставить их выполняться в нужный момент?
Владимир Соколов,
Используйте тип установки, если он не работает так как вам надо и это баг пишите в техподдержку и ждите исправления в следующих версиях.
Обходной вариант разнести их в несколько пакетов и сначала поставить пакет1 потом пакет2.
Вообще я бы не лез в исправление типа поля и создал бы новое поле с нужной длиной и использовал бы его там где надо в логике.
Полозюков Евгений Петрович,
Иногда у клиента бывает, что в стандартные 250 символов не помещается текст, и он просит увеличить до 500... Переделывать всю логику очень лень :)
Поддержка же отмалчивается.
С пакетами идея! А как пакеты объединить потом в одно "дополнение", чтобы высылать одним файлом?
Владимир Соколов,
Исправлять типы полей после того как они уже созданы сложная задача, лучше ее избегать.
В один файл можно самому сархивировать все выгруженные пакеты. Либо выделить несколько пакетов при выгрузке если это делается в интерфейсе конфигурации.
В вашем случае если вы объедините пакеты в один проблема с установкой может остаться. В таком случае перед установкой пакетов надо самостоятельно на бд удалить view, по-другому я не вижу вариантов.
Если нет доступа к бд надо послать скрипты для выполнения перед установкой пакетов тому у кого есть доступ к бд.
Дополнительный вопрос к знающим людям - А скрипты выполняются всегда или только в том случае, если изменились с момента последней установки?
Владимир Соколов,
Можно это проверить самостоятельно поставив пакет несколько раз подряд и посмотрев лог установки.
Я при написании скриптов исхожу из того что скрипты выполняются всегда и поэтому пишутся дополнительные проверки чтобы одна и та же операция не выполнялась несколько раз.
К примеру если вы добавляете записи с помощью insert, перед выполнение необходимо проверить наличие записи с помощью select. Если запись есть insert не выполнять.
Примеры написания скриптов есть в базовых пакетах.