powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Oracle GG и UPDATE_PK ,составные ключи.
3 сообщений из 3, страница 1 из 1
Oracle GG и UPDATE_PK ,составные ключи.
    #40073006
dismay
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Вопрос про событие PK_UPDATE.
На Источнике первичный ключ (вероятно создан на куче) из 9 полей. При изменении одного из полей (Update) входящих в составной PK формируется событие PK_UPDATE и это происходит часто. Система настроена таким образом, что в этом случае при Update PK формируется новая вставка по логике insert, что в принципе логично для GG, но с точки зрения источника происходит Delete -> Insert. В итоге на источнике 100 записей, на приемнике после GG 1000, только в случае PK_Update так выходит.
Вопросы:
1) Нормально ли update- ить первичные ключи?
2) Как еще можно переливать табличку через GG в которой нет явного PK по одному полю?
3) Как используя Oracle GG переливать таблички без PK или если PK получается только по всем полям?
...
Рейтинг: 0 / 0
Oracle GG и UPDATE_PK ,составные ключи.
    #40073079
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dismay
Добрый день.
При изменении одного из полей (Update) входящих в составной PK формируется событие PK_UPDATE

Система настроена таким образом , что ... при Update PK формируется новая вставка по логике insert, что в принципе логично для GG, но с точки зрения источника происходит Delete -> Insert. В итоге на источнике 100 записей, на приемнике после GG 1000, только в случае PK_Update так выходит.

Событие PK UPDATE в GG - это UPDATE, любая другая логика - самодельная.
Настройте систему более подходящим образом.
...
Рейтинг: 0 / 0
Oracle GG и UPDATE_PK ,составные ключи.
    #40073243
Maxifly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dismay,
В GG в UPDATE есть понятие предыдущего значения поля, как в триггере примерно.
Можно сделать процедуру, которую запускать при UPDATE-тах и передавать ей значения до и после UPDATE, а процедуру научить решать конфликты так как вам надо.

Примерно так в репликате на UPDATE настройка:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
MAP UUU.USER_CONNECTIONS, TARGET UUU.USER_CONNECTIONS, &
FILTER(ON DELETE,1=2), &
FILTER(ON UPDATE,1=2), &
FILTER(ON INSERT,1=2), &
SQLEXEC (ID USER_CONNECTIONS_UPD , &
ON UPDATE, &
SPNAME UUU.GG_CONFIG_PG.USER_CONNECTIONS_MRG, &
PARAMS ( &
P_PREV_SUCN_ID = @IF (@COLTEST (BEFORE.SUCN_ID, MISSING), @COLSTAT (NULL), BEFORE.SUCN_ID), &
P_PREV_OWNER_ID = @IF (@COLTEST (BEFORE.OWNER_ID, MISSING), @COLSTAT (NULL), BEFORE.OWNER_ID), &
P_PREV_CHILD_ID = @IF (@COLTEST (BEFORE.CHILD_ID, MISSING), @COLSTAT (NULL), BEFORE.CHILD_ID), &
P_SUCN_ID = @IF (@COLTEST (SUCN_ID, MISSING), @IF (@COLTEST (BEFORE.SUCN_ID, MISSING), @COLSTAT (NULL), BEFORE.SUCN_ID ), SUCN_ID), &
P_OWNER_ID = @IF (@COLTEST (OWNER_ID, MISSING), @IF (@COLTEST (BEFORE.OWNER_ID, MISSING), @COLSTAT (NULL), BEFORE.OWNER_ID ), OWNER_ID), &
P_CHILD_ID = @IF (@COLTEST (CHILD_ID, MISSING), @IF (@COLTEST (BEFORE.CHILD_ID, MISSING), @COLSTAT (NULL), BEFORE.CHILD_ID ), CHILD_ID), &
P_DEL_USER = @IF (@COLTEST (DEL_USER, MISSING), @IF (@COLTEST (BEFORE.DEL_USER, MISSING), @COLSTAT (NULL), BEFORE.DEL_USER ), DEL_USER), &
P_DEL_DATE = @IF (@COLTEST (DEL_DATE, MISSING), @IF (@COLTEST (BEFORE.DEL_DATE, MISSING), @COLSTAT (NULL), BEFORE.DEL_DATE ), DEL_DATE), &
P_NAVI_USER = @IF (@COLTEST (NAVI_USER, MISSING), @IF (@COLTEST (BEFORE.NAVI_USER, MISSING), @COLSTAT (NULL), BEFORE.NAVI_USER ), NAVI_USER), &
P_NAVI_DATE = @IF (@COLTEST (NAVI_DATE, MISSING), @IF (@COLTEST (BEFORE.NAVI_DATE, MISSING), @COLSTAT (NULL), BEFORE.NAVI_DATE ), NAVI_DATE), &
), &
ERROR FATAL, &
BEFOREFILTER, &
EXEC SOURCEROW, &
MAXVARCHARLEN 32000);
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Oracle GG и UPDATE_PK ,составные ключи.
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]