Обновление MIS3 — различия между версиями
(→Обновление метаданных) |
(→Обновление метаданных) |
||
| Строка 15: | Строка 15: | ||
<<Далее скрипт создающий таблицу в БД. Например: CREATE TABLE audit.logged_actions... >> | <<Далее скрипт создающий таблицу в БД. Например: CREATE TABLE audit.logged_actions... >> | ||
END IF ; | END IF ; | ||
| + | END; | ||
| + | $$ | ||
| + | |||
| + | Пример кода, проверяющий наличие в БД тригера и при его отсутсвии создающий его: | ||
| + | DO | ||
| + | $$ | ||
| + | BEGIN | ||
| + | IF NOT EXISTS(SELECT * | ||
| + | FROM information_schema.triggers | ||
| + | WHERE event_object_table = 'warehouse_accounting_entry' | ||
| + | AND trigger_name = 'audit_trigger_row' ) | ||
| + | THEN | ||
| + | CREATE TRIGGER audit_trigger_stm | ||
| + | AFTER TRUNCATE | ||
| + | ON mm.warehouse_accounting_entry FOR EACH STATEMENT | ||
| + | EXECUTE PROCEDURE audit.if_modified_func_warehouse_pharm('true'); | ||
| + | |||
| + | CREATE TRIGGER audit_trigger_row | ||
| + | AFTER INSERT OR UPDATE OR DELETE | ||
| + | ON mm.warehouse_accounting_entry FOR EACH ROW | ||
| + | EXECUTE PROCEDURE audit.if_modified_func_warehouse_pharm('true'); | ||
| + | END IF ; | ||
| + | |||
END; | END; | ||
$$ | $$ | ||
Версия 09:32, 21 января 2016
Обновление метаданных
При создании скриптов обновляющих объекты БД можно использовать проверку на существование обновляемых объектов БД. Для этого достаточно написать небольшой блок кода.
Пример кода, проверяющий наличие таблицы в БД и при её отсутствии создающий её:
DO
$$
BEGIN
IF NOT EXISTS(SELECT *
FROM information_schema.tables where table_schema||'.'||table_name='audit.logged_actions')
-- Вместо 'audit.logged_actions' необходимо указать имя схемы БД в которой располагается объект
-- и через точку указать имя проверяемой таблицы
THEN
<<Далее скрипт создающий таблицу в БД. Например: CREATE TABLE audit.logged_actions... >>
END IF ;
END;
$$
Пример кода, проверяющий наличие в БД тригера и при его отсутсвии создающий его:
DO $$ BEGIN
IF NOT EXISTS(SELECT *
FROM information_schema.triggers
WHERE event_object_table = 'warehouse_accounting_entry'
AND trigger_name = 'audit_trigger_row' )
THEN
CREATE TRIGGER audit_trigger_stm
AFTER TRUNCATE
ON mm.warehouse_accounting_entry FOR EACH STATEMENT
EXECUTE PROCEDURE audit.if_modified_func_warehouse_pharm('true');
CREATE TRIGGER audit_trigger_row
AFTER INSERT OR UPDATE OR DELETE
ON mm.warehouse_accounting_entry FOR EACH ROW
EXECUTE PROCEDURE audit.if_modified_func_warehouse_pharm('true');
END IF ;
END; $$
Данные в таблицах, которые должны быть одинаковыми на всех БД
- mm.app_tab - справочник закладок
- mm.rght - только первые 1000 записей, остальные все одинаковые
- mm.rsf_ref_column - колонки по реестру счетом
- audit.table_conf - назначение мест аудита для таблиц
Разрабатываемая система (Нефедов)
Этот раздел устарел!!!
Для выполнения пакетов обновления (подготовленных для удалённого выполнения) без наличия подключения к БД заказчиков можно использовать файл aUpdateIBIS.exe Этот файл облегчит процесс выполнения обновления для удалённых администраторов системы. Поэтому его нужно отправлять на объект вместе с запакованным 7zip или распакованным (в виде папки) архивом.
Когда администратор запустит aUpdateIBIS.exe, появится окно с просьбой - указать местонахождение директории из которой запускается система ИБИС. После того как директория будет указана, этот файл запустит A1IBIS.exe с параметром /runupd="путь к архиву обновления". При этом путь к архиву обновления будет сформирован автоматически.
В архиве (запакованном или распакованном) ОБЯЗАТЕЛЬНО должен находиться файл UPDATE.INI Cодержимое файла UPDATE.INI может быть таким:
[ORDER] 2=russian.lng 1=7za.dll
[PATH] russian.lng=test 7za.dll=test
В разделе ORDER указывается порядок обновляемых файлов, а в разделе PATH указывается название директории в которую A1IBIS.exe будет выкачивать файл. Наличие названий директорий в разделе PATH - не обязательно.
Исходники aUpdateIBIS.exe лежат тут: trunk/ER3/Source/!Updater
PS. Далее хотел бы добавить возможность, кроме файлов системы добавлять файлы скриптов (для их выполнения).