powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASA 9.0.2 - репликация
13 сообщений из 13, страница 1 из 1
ASA 9.0.2 - репликация
    #34448499
v_smirnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые гуру!

Все ли я правильно понял и нет ли других вариантов ...

Есть 2 таблицы (например)
t_invoiсe (шапка счета)
и
t_invoice_det (содержимое)

в t_invoice есть признак, если признак = True то счет переслать целиком, иначе не пересылать.

т.к. dbRemote анализирует что требуется отправить по обмену опираясь только на лог базы то для того что бы по обмену ушла не только запись из t_invoice но и из t_invoice_det, последняя должна иметь любое поле (напрмер timestamp) которое принудительно обновляется после изменения поля t_invoice.признак.
Цель этого обновления - появление записей в transaction log и далее в обмене.

Других способов передавать подчиненные данные не существует?

Очень хочется что бы я ошибался ...
Есть ли другой способ организации обмена?

P.S. Данные до их полного формирования не должны никуда уезжать по обмену!
...
Рейтинг: 0 / 0
ASA 9.0.2 - репликация
    #34448516
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я правильно понял структуру данных, то на консолидированой базе есть таблица с флаговым полем, и в зависимости от изменения этого флага на удаленных базах должны появляться или исчезать записи в зависимой таблице? Так?
Например вчера создали накладную ФЫВА-124 с флагом Реплицировать=TRUE, содержимое накладной автоматически уехало на удаленные базы. Сегодня обновили заголовок наколадной, поставили Реплицировать=FALSE и все удаленые базы автоматически убили содержимое накладной, а на консолидированой базе содержание осталось?
Или наоборот, сменили флаг с FALSE на TRUE и ранее нереплицированное содержание накладной уехало на удаленную базу?
Так?

---
http://www.rusug.ru] Портал русскоязычной группы пользователей Sybase
...
Рейтинг: 0 / 0
ASA 9.0.2 - репликация
    #34448732
Sergey Orlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v_smirnovУважаемые гуру!

Все ли я правильно понял и нет ли других вариантов ...

Есть 2 таблицы (например)
t_invoiсe (шапка счета)
и
t_invoice_det (содержимое)

в t_invoice есть признак, если признак = True то счет переслать целиком, иначе не пересылать.

т.к. dbRemote анализирует что требуется отправить по обмену опираясь только на лог базы то для того что бы по обмену ушла не только запись из t_invoice но и из t_invoice_det, последняя должна иметь любое поле (напрмер timestamp) которое принудительно обновляется после изменения поля t_invoice.признак.
Цель этого обновления - появление записей в transaction log и далее в обмене.

Других способов передавать подчиненные данные не существует?

Очень хочется что бы я ошибался ...
Есть ли другой способ организации обмена?

P.S. Данные до их полного формирования не должны никуда уезжать по обмену!
Какая разница изменено ли поле в подчиненной таблице или нет, если ты изменяешь поле в основной, изменения в основной таблице все равно уйдут.Если ты в подчинненой таблице каждый раз будешь менять любое поле, скажем какое-нибудь служебное, то у тебя будет просто дополнительный трафик. Тебе просто на клиенте после формирования нового счета надо помещать сразу одним блоком данные.
Да кстати, если очень хочется, то можно создать подписку , в которой таблицы будут реплицироваться по твоему условию, т.е. будут реплицироваться записи у которых поле признак будет = true, естественно и у подчиненной таблице ты должен будешь задать соответствующие условие, для целостности.
...
Рейтинг: 0 / 0
ASA 9.0.2 - репликация
    #34448878
v_smirnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 White Owl - да! - именно так.

2 Sergey Orlov

авторКакая разница изменено ли поле в подчиненной таблице или нет, если ты изменяешь поле в основной, изменения в основной таблице все равно уйдут

Если изменение в основной произошло когда уже в подчиненной есть записи то уйдет по обмену действительно только запись из оснвной таблицы. Уже существующие записи из подчиненной таблицы никуда не уйдут, dbRemote на них просто не обратит внимания.

условие подписки на подчиненной таблице примерно nтакое:
where (select признак from t_invoice i where i.PK=t_invoice_det.PK)
...
Рейтинг: 0 / 0
ASA 9.0.2 - репликация
    #34449020
Фотография Рыжий Кот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если так играться: включили флаг - уехало, выключили - пропало, опять включили - уехало,
то лишний трафик, особенно если еще что-то будет в виде атачментов.
проще реплицировать все... а флагами (и доп. атрибутами) определять, должна ли данная накладная быть видна.
...
Рейтинг: 0 / 0
ASA 9.0.2 - репликация
    #34449073
v_smirnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Рыжий Кот

Нет - реплицировать все это не выход и не решение (по крайней мере в моем случае).

Значит остается только одно - служебное обновляемое поле...
...
Рейтинг: 0 / 0
ASA 9.0.2 - репликация
    #34449153
pand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v_smirnov2 White Owl - да! - именно так.

2 Sergey Orlov

[quot автор]Какая разница изменено ли поле в подчиненной таблице или нет, если ты изменяешь поле в основной, изменения в основной таблице все равно уйдут

Если изменение в основной произошло когда уже в подчиненной есть записи то уйдет по обмену действительно только запись из оснвной таблицы. Уже существующие записи из подчиненной таблицы никуда не уйдут, dbRemote на них просто не обратит внимания.

+1

создай тригер на t_invoiсe

ALTER TRIGGER "tbu_bla_bla " before UPDATE
ORDER 1 ON t_invoiсe
REFERENCING OLD AS old_row NEW AS new_row
FOR EACH ROW
BEGIN

UPDATE t_invoice_det
publication <Publication name >
subscribe by <по чем сабскрайбим >
WHERE new_row.PK=t_invoice_det.FK (Я так понимаю с PK была очепятка )
end ;

а более детально почитай

SQL Remote User's Guide
Command Reference for Adaptive Server Anywhere
UPDATE statement
...
Рейтинг: 0 / 0
ASA 9.0.2 - репликация
    #34449306
Sergey Orlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v_smirnov2 White Owl - да! - именно так.

2 Sergey Orlov

авторКакая разница изменено ли поле в подчиненной таблице или нет, если ты изменяешь поле в основной, изменения в основной таблице все равно уйдут

Если изменение в основной произошло когда уже в подчиненной есть записи то уйдет по обмену действительно только запись из оснвной таблицы. Уже существующие записи из подчиненной таблицы никуда не уйдут, dbRemote на них просто не обратит внимания.

условие подписки на подчиненной таблице примерно nтакое:
where (select признак from t_invoice i where i.PK=t_invoice_det.PK)
Да какая разница, эта запись из подчиненной уже уехала, она уже есть на удаленной...
...
Рейтинг: 0 / 0
ASA 9.0.2 - репликация
    #34449324
pand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
insert into t_invoice ( Id,...., Priznak )
values ( 2,....,FALSE ) ;

insert into t_invoice_det ( id_Invoice, id_det ,......);
values ( 2,1 ..... );

update t_invoice set Priznak = true
where id = 2 ;

при такой последовательности уедет только шапка ( t_invoice )
...
Рейтинг: 0 / 0
ASA 9.0.2 - репликация
    #34449770
v_smirnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 pand

СПС! за подсказку. Как часто бывает для того что бы что-то найти надо точно знать где искать ;)

Пока эксперименты показали что это работает но пока только в одну сторону.
Т.е:
- признак=True - все уезжает как и задумывалось.
- признак=False - уезжает только запись из основной таблицы (уезжает удаление т.к. запись престала соответствовать публикации). Скорее всего где-то я ошибся с условиями.
...
Рейтинг: 0 / 0
ASA 9.0.2 - репликация
    #34449950
Sergey Orlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
v_smirnov2 pand

СПС! за подсказку. Как часто бывает для того что бы что-то найти надо точно знать где искать ;)

Пока эксперименты показали что это работает но пока только в одну сторону.
Т.е:
- признак=True - все уезжает как и задумывалось.
- признак=False - уезжает только запись из основной таблицы (уезжает удаление т.к. запись престала соответствовать публикации). Скорее всего где-то я ошибся с условиями.
Повесь тогда в подчиненой таблице признак, ну а дальше если в основной false, тогда триггером основной таблице в подчиненной сделать соответсвующие записи в true, потом в false, ну и наоборот соответсвенно.
...
Рейтинг: 0 / 0
ASA 9.0.2 - репликация
    #34450506
pand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Orlov v_smirnov2 pand

СПС! за подсказку. Как часто бывает для того что бы что-то найти надо точно знать где искать ;)

Пока эксперименты показали что это работает но пока только в одну сторону.
Т.е:
- признак=True - все уезжает как и задумывалось.
- признак=False - уезжает только запись из основной таблицы (уезжает удаление т.к. запись престала соответствовать публикации). Скорее всего где-то я ошибся с условиями.
Повесь тогда в подчиненой таблице признак, ну а дальше если в основной false, тогда триггером основной таблице в подчиненной сделать соответсвующие записи в true, потом в false, ну и наоборот соответсвенно.
Только не забудь что действия тригеров по умолчанию не попадают в репликацию.
не видя схемы трудно угадать, но попробую
думаю что просто с true false не обойдешься.
посмотри как организовать репликацию с использованием SUBSCRIBE BY

можешь вырезать кусок схемы с репликацией и прислать может смогу более детально подсказать.

Самому создавать честно говоря нехохота :)
...
Рейтинг: 0 / 0
ASA 9.0.2 - репликация
    #34451116
v_smirnov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 pand

СПС за то что готов помочь.
Сегодня еще повоюю и детально поизучаю этот вопрос. Если что-то не срастется обязательно напишу (кстати - куда писать? в подниковое?).

ася моя 7469638
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASA 9.0.2 - репликация
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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