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

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


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

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

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

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

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

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

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

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 ;

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

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'