мета-данные страницы
Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
convert_db_table_tu_replication [19.06.2020 17:01] sergeykrasn File build by file2dw plugin from fileПреобразование существующей таблицы в репликационную.docx |
convert_db_table_tu_replication [22.11.2023 16:13] OLDest |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
- | ====== Преобразование существующей таблицы в репликационную.docx ====== | ||
====== Преобразование существующей таблицы в репликационную ====== | ====== Преобразование существующей таблицы в репликационную ====== | ||
+ | |||
+ | Ключевые слова: | ||
+ | Как добавить репликацию таблице/сделать таблицу репликационной/репликационная таблица | ||
Выполняется в программе DBmeta.exe | Выполняется в программе DBmeta.exe | ||
- | - В списке таблиц выбрать целевую таблицу и в поле **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}} |
- | <HTML><ol start="2" style="list-style-type: decimal;"></HTML> | + | 2) Пункт меню **Операции/Commit changes** . Скопировать скрипт из открывшегося окна. |
- | <HTML><li></HTML><HTML><p></HTML>Пункт меню **Операции/Commit changes** . Скопировать скрипт из открывшегося окна и вставить его в файл со скриптом.<HTML></p></HTML><HTML></li></HTML><HTML></ol></HTML> | + | |
- | {{: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}}\\ |
+ | и вставить его в файл со скриптом | ||
- | <HTML><ol start="3" style="list-style-type: decimal;"></HTML> | + | 3) Пунк меню **Операции / Replication struct / Создать/удалить ** для выбранной таблице . Скопировать скрипт из открывшегося окна и добавить его в файл со скриптом, созданным в п. 2. |
- | <HTML><li></HTML><HTML><p></HTML>Пунк меню Операции / Replication struct / Создать/удалить для выбранной таблице . Скопировать скрипт из открывшегося окна и добавить его в файл со скриптом, созданным в п. 2.<HTML></p></HTML><HTML></li></HTML><HTML></ol></HTML> | + | |
{{: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}} | ||
- | <HTML><ol start="4" style="list-style-type: decimal;"></HTML> | + | 4) Разделить общий скрипт на две части. |
- | <HTML><li></HTML><HTML><p></HTML>Разделить общий скрипт на две части.<HTML></p></HTML><HTML></li></HTML><HTML></ol></HTML> | + | |
Первая часть скрипта: для всех БД | Первая часть скрипта: для всех БД | ||
+ | <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> |