мета-данные страницы
Преобразование существующей таблицы в репликационную
Ключевые слова: Как добавить репликацию таблице/сделать таблицу репликационной/репликационная таблица
Выполняется в программе 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_BAGDROPPERS_AD FOR LOCKER_BAGDROPPERS 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 ((:IS_CENT=1) OR (current_role<>'REPL_ROLE')) THEN SELECT seq_id FROM MST_META_CHANGES_I( 'LOCKER_BAGDROPPERS' , OLD.ID, 3) INTO :SEQ_ID; END END ^ SET TERM ; ^ SET TERM ^ ; CREATE TRIGGER LOCKER_BAGDROPPERS_AU FOR LOCKER_BAGDROPPERS 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 ((:IS_CENT=1) OR (current_role<>'REPL_ROLE')) THEN SELECT seq_id FROM MST_META_CHANGES_I( 'LOCKER_BAGDROPPERS' , NEW.ID, 2) INTO :SEQ_ID; END END ^ SET TERM ; ^ SET TERM ^ ; CREATE TRIGGER LOCKER_BAGDROPPERS_AI FOR LOCKER_BAGDROPPERS 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 ((:IS_CENT=1) OR (current_role<>'REPL_ROLE')) THEN SELECT seq_id FROM MST_META_CHANGES_I( 'LOCKER_BAGDROPPERS' , NEW.ID, 1) INTO :SEQ_ID; END END ^ SET TERM ; ^ SET TERM ^ ; CREATE TRIGGER LOCKER_BAGDROPPERS_AA FOR LOCKER_BAGDROPPERS ACTIVE BEFORE UPDATE POSITION 15 AS BEGIN IF (current_role<>'REPL_ROLE') THEN BEGIN NEW.LAST_DEP_ID=0; END END^ SET TERM ; ^