мета-данные страницы
  •  

Это старая версия документа!


Преобразование существующей таблицы в репликационную

Выполняется в программе DBmeta.exe

- В списке таблиц выбрать целевую таблицу и в поле Replication type установить его в значение Document (to centre).

- Пункт меню Операции/Commit changes . Скопировать скрипт из открывшегося окна и вставить его в файл со скриптом.

- Пунк меню Операции / Replication struct / Создать/удалить для выбранной таблице . Скопировать скрипт из открывшегося окна и добавить его в файл со скриптом, созданным в п. 2.

- Разделить общий скрипт на две части.

Первая часть скрипта: для всех БД

<CODE SQL>

GRANT ALL ON LOCKER_BAGS TO REPL_ROLE; execute procedure ADD_MST_RELATION('LOCKER_BAGS', 2);

ALTER TABLE LOCKER_BAGS ADD DEP_ID D_ID_INT64 DEFAULT 0 NOT NULL ;

ALTER TABLE LOCKER_BAGS ADD LAST_DEP_ID D_ID_INT64 DEFAULT 0 NOT NULL ;

ALTER TABLE LOCKER_BAGS ADD DEP_SRC_ID D_ID_INT64 DEFAULT 0 NOT NULL ; </CODE>

Вторая часть скрипта: для репликационной БД

SET TERM ^ ;

CREATE TRIGGER LOCKER_BAGS_AD FOR LOCKER_BAGS ACTIVE AFTER DELETE POSITION 10 AS DECLARE VARIABLE SEQ_ID D_INT64; DECLARE VARIABLE IS_CENT D_INT64; begin if (current_role<>'DEL_ROLE') then begin IS_CENT = GEN_ID(GEN_IS_CENTR_DB, 0); if 1) then select seq_id from MST_META_CHANGES_I( 'LOCKER_BAGS' , old.ID, 3) into :SEQ_ID; end end ^

SET TERM ; ^

SET TERM ^ ;

CREATE TRIGGER LOCKER_BAGS_AU FOR LOCKER_BAGS ACTIVE AFTER UPDATE POSITION 10 AS DECLARE VARIABLE SEQ_ID D_INT64; DECLARE VARIABLE IS_CENT D_INT64; begin if (current_role<>'DEL_ROLE') then begin IS_CENT = GEN_ID(GEN_IS_CENTR_DB, 0); if 2) then select seq_id from MST_META_CHANGES_I( 'LOCKER_BAGS' , new.ID, 2) into :SEQ_ID; end

end ^

SET TERM ; ^

SET TERM ^ ;

CREATE TRIGGER LOCKER_BAGS_AI FOR LOCKER_BAGS ACTIVE AFTER INSERT POSITION 10 AS DECLARE VARIABLE SEQ_ID D_INT64; DECLARE VARIABLE IS_CENT D_INT64; begin if (current_role<>'DEL_ROLE') then begin IS_CENT = GEN_ID(GEN_IS_CENTR_DB, 0); if 3) then select seq_id from MST_META_CHANGES_I( 'LOCKER_BAGS' , new.ID, 1) into :SEQ_ID; end

end ^

SET TERM ; ^

SET TERM ^ ;

CREATE TRIGGER LOCKER_BAGS_AA FOR LOCKER_BAGS ACTIVE BEFORE UPDATE POSITION 15 AS begin if (current_role<>'REPL_ROLE') then begin new.LAST_DEP_ID=0; end

end^

SET TERM ; ^

1) , 2) , 3)
:IS_CENT=1) or (current_role<>'REPL_ROLE'