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

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
convert_db_table_tu_replication [19.06.2020 17:06]
sergeykrasn
convert_db_table_tu_replication [22.11.2023 16:13] (текущий)
OLDest
Строка 1: Строка 1:
 ====== Преобразование существующей таблицы в репликационную ====== ====== Преобразование существующей таблицы в репликационную ======
 +
 +Ключевые слова:
 +Как добавить репликацию таблице/​сделать таблицу репликационной/​репликационная таблица
  
 Выполняется в программе DBmeta.exe Выполняется в программе DBmeta.exe
  
-  ​1) В списке таблиц выбрать целевую таблицу и в поле **Replication type** установить его в значение **Document (to centre)**.+1) В списке таблиц выбрать целевую таблицу и в поле **Replication type** установить его в значение **Document (to centre)**.
  
-{{:​Preobrazovaniye_sushchestvuyushchey_tablitsy_v_replikatsionnuyu_docx_2020-06-19_17-01-24_img1.png?​464x359}}+{{:​Preobrazovaniye_sushchestvuyushchey_tablitsy_v_replikatsionnuyu_docx_2020-06-19_17-01-24_img1.png?​464x359}}
  
- 2) Пункт меню **Операции/​Commit changes** . Скопировать скрипт из открывшегося окна ​и вставить его в файл со скриптом.+2) Пункт меню **Операции/​Commit changes** . Скопировать скрипт из открывшегося окна.
  
-{{:​Preobrazovaniye_sushchestvuyushchey_tablitsy_v_replikatsionnuyu_docx_2020-06-19_17-01-24_img2.png?​455x299}}+{{:​Preobrazovaniye_sushchestvuyushchey_tablitsy_v_replikatsionnuyu_docx_2020-06-19_17-01-24_img2.png?​455x299}}\\ 
 +и вставить его в файл со скриптом
  
- +3) Пунк меню **Операции / Replication struct / Создать/​удалить ** для выбранной таблице . Скопировать скрипт из открывшегося окна и добавить его в файл со скриптом,​ созданным в п. 2.
-   3) Пунк меню **Операции / Replication struct / Создать/​удалить ** для выбранной таблице . Скопировать скрипт из открывшегося окна и добавить его в файл со скриптом,​ созданным в п. 2.+
  
 {{:​Preobrazovaniye_sushchestvuyushchey_tablitsy_v_replikatsionnuyu_docx_2020-06-19_17-01-24_img3.png?​361x636}} {{:​Preobrazovaniye_sushchestvuyushchey_tablitsy_v_replikatsionnuyu_docx_2020-06-19_17-01-24_img3.png?​361x636}}
  
-  ​4) Разделить общий скрипт на две части.+4) Разделить общий скрипт на две части.
  
 Первая часть скрипта:​ для всех БД Первая часть скрипта:​ для всех БД
  
 +<code sql>
 GRANT ALL ON LOCKER_BAGS TO REPL_ROLE; GRANT ALL ON LOCKER_BAGS TO REPL_ROLE;
- 
 execute procedure ADD_MST_RELATION('​LOCKER_BAGS',​ 2); execute procedure ADD_MST_RELATION('​LOCKER_BAGS',​ 2);
  
 ALTER TABLE LOCKER_BAGS ALTER TABLE LOCKER_BAGS
- 
 ADD DEP_ID D_ID_INT64 ADD DEP_ID D_ID_INT64
- 
 DEFAULT 0 DEFAULT 0
- 
 NOT NULL ; NOT NULL ;
  
 ALTER TABLE LOCKER_BAGS ALTER TABLE LOCKER_BAGS
- 
 ADD LAST_DEP_ID D_ID_INT64 ADD LAST_DEP_ID D_ID_INT64
- 
 DEFAULT 0 DEFAULT 0
- 
 NOT NULL ; NOT NULL ;
  
 ALTER TABLE LOCKER_BAGS ALTER TABLE LOCKER_BAGS
- 
 ADD DEP_SRC_ID D_ID_INT64 ADD DEP_SRC_ID D_ID_INT64
- 
 DEFAULT 0 DEFAULT 0
- 
 NOT NULL ; NOT NULL ;
 +</​code>​
  
-Вторая часть скрипта:​ для репликационной БД+Вторая часть скрипта:​ для репликационной БД (в скриптах,​ галочка:​ "​для баз с включенной репликацией"​)
  
-SET TERM ^ ; 
  
-CREATE TRIGGER LOCKER_BAGS_AD FOR LOCKER_BAGS +<code sql>
- +
-ACTIVE AFTER DELETE POSITION 10+
  
 +SET TERM ^ ; 
 +CREATE TRIGGER LOCKER_BAGDROPPERS_AD FOR LOCKER_BAGDROPPERS ​
 +ACTIVE AFTER DELETE POSITION 10 
 AS AS
- 
 DECLARE VARIABLE SEQ_ID D_INT64; DECLARE VARIABLE SEQ_ID D_INT64;
- 
 DECLARE VARIABLE IS_CENT 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);
  
-begin +    ​if ((:​IS_CENT=1) or (current_role<>'​REPL_ROLE'​)) then 
- +      select seq_id from MST_META_CHANGES_I( 'LOCKER_BAGDROPPERS' , old.ID, 3) 
-if (current_role<>'​DEL_ROLE'​) then +      into :SEQ_ID; 
- +  end 
-begin +end ^ 
- +
-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_BAGS' , old.ID, 3) +
- +
-into :SEQ_ID; +
- +
-end +
- +
-end ^ +
 SET TERM ; ^ SET TERM ; ^
  
-SET TERM ^ ; +SET TERM ^ ;  
- +CREATE TRIGGER ​LOCKER_BAGDROPPERS_AU ​FOR LOCKER_BAGDROPPERS ​ 
-CREATE TRIGGER ​LOCKER_BAGS_AU ​FOR LOCKER_BAGS +ACTIVE AFTER UPDATE POSITION 10 
- +
-ACTIVE AFTER UPDATE POSITION 10 +
 AS AS
- 
 DECLARE VARIABLE SEQ_ID D_INT64; DECLARE VARIABLE SEQ_ID D_INT64;
- 
 DECLARE VARIABLE IS_CENT 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);
  
-begin +    ​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;  
-if (current_role<>'​DEL_ROLE'​) then +  end 
- +end ^ 
-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_BAGS' , new.ID, 2) into :SEQ_ID; +
- +
-end +
- +
-end ^ +
 SET TERM ; ^ SET TERM ; ^
  
-SET TERM ^ ; +SET TERM ^ ;  
- +CREATE TRIGGER ​LOCKER_BAGDROPPERS_AI ​FOR LOCKER_BAGDROPPERS ​ 
-CREATE TRIGGER ​LOCKER_BAGS_AI ​FOR LOCKER_BAGS +ACTIVE AFTER INSERT POSITION 10 
- +
-ACTIVE AFTER INSERT POSITION 10 +
 AS AS
- 
 DECLARE VARIABLE SEQ_ID D_INT64; DECLARE VARIABLE SEQ_ID D_INT64;
- 
 DECLARE VARIABLE IS_CENT 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);
  
-begin +    ​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;  
-if (current_role<>'​DEL_ROLE'​) then +  end 
- +end ^ 
-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_BAGS' , new.ID, 1) into :SEQ_ID; +
- +
-end +
- +
-end ^ +
 SET TERM ; ^ SET TERM ; ^
  
 SET TERM ^ ; SET TERM ^ ;
- +CREATE TRIGGER ​LOCKER_BAGDROPPERS_AA ​FOR LOCKER_BAGDROPPERS
-CREATE TRIGGER ​LOCKER_BAGS_AA ​FOR LOCKER_BAGS +
 ACTIVE BEFORE UPDATE POSITION 15 ACTIVE BEFORE UPDATE POSITION 15
- +AS 
-AS +
 begin begin
- +  ​if (current_role<>'​REPL_ROLE'​) then 
-if (current_role<>'​REPL_ROLE'​) then +  begin 
- +    new.LAST_DEP_ID=0;​ 
-begin +  end    
- +
-new.LAST_DEP_ID=0;​ +
- +
-end +
 end^ end^
 +SET TERM ; ^
  
-SET TERM ; ^+</​code>​