powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASA 11 Работа репликации + триггеры.
6 сообщений из 6, страница 1 из 1
ASA 11 Работа репликации + триггеры.
    #38038692
alexsmile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день всем.
Прошу помощи следующем вопросе.
ASA 11.1.2527
У меня есть консолидированная БД + 24 удаленных.
Обмен через dbremote.
Есть таблица остатков.
Вот ее структура
CREATE TABLE "DBA"."OSTAT" (
"FIRM" SMALLINT NOT NULL,
"STORE" SMALLINT NOT NULL,
"TCODE" INTEGER NOT NULL,
"PART_TYPEOP" SMALLINT NOT NULL,
"PART_NUMBER" INTEGER NOT NULL,
"PART_NUMSTR" INTEGER NOT NULL,
"PART_CCODE" INTEGER NOT NULL DEFAULT 0,
"REZERV" DECIMAL(13,3) NULL,
"QUANT" DECIMAL(13,3) NULL,
"PRICE" DECIMAL(13,2) NULL,
"SUMMNDS" DECIMAL(13,2) NULL,
"SUMM" DECIMAL(13,2) NULL,
"SPRICE" DECIMAL(13,2) NULL,
"SUMMNP" DECIMAL(13,2) NULL,
"RSSUMM" DECIMAL(13,2) NULL,
"nalog1" DECIMAL(5,2) NULL,
"nalog2" DECIMAL(5,2) NULL,
"summ_actiz" DECIMAL(13,2) NULL,
PRIMARY KEY ( "FIRM" ASC, "STORE" ASC, "TCODE" ASC, "PART_TYPEOP" ASC, "PART_NUMBER" ASC, "PART_NUMSTR" ASC )
) ;
Данная таблица добавлена в репликацию aa с условием sybcsribe by firm

Есть cash, который пишет в БД чеки с ККМ и модифицирует остатки, и есть пользователь gremis с правами remote.
Логика реализована на триггерах, в БД пишется чек, пользователь cash его пишет, затем меняет статус проведения чека и триггером создается документ реализации и модифицируются остатки.
Но иногда случаются непонятные моменты. На остатках товара остается не правильно кол-во.
Стал копать. создал таблицу ostatlog и стал туда писать любые изменения с таблицей ostat.
Вот какая загогулина у меня получилась
"pk_key" "dt" "dbuser" "FIRM" "STORE" "TCODE" "PART_TYPEOP" "PART_NUMBER" "PART_NUMSTR" "PART_CCODE" "REZERV" "QUANT" "PRICE" "SUMMNDS" "SUMM" "SPRICE" "SUMMNP" "RSSUMM" "nalog1" "nalog2" "summ_actiz" 576742012-11-14 10:58:32.325'cash'16213015411103139156381.00010.0005.6511.3056.508.5014.1685.0020.0020.000.00576752012-11-14 10:58:32.328'cash'16213015411103139156380.0009.0005.6510.1750.858.5012.7476.5020.0020.000.00576762012-11-14 10:58:32.328'cash'16213015411103139156380.0009.0005.6510.1750.858.5012.7576.5020.0020.000.00576772012-11-14 10:58:32.340'cash'16213015411103139156381.0009.0005.6510.1750.858.5012.7576.5020.0020.000.00576782012-11-14 10:58:32.343'cash'16213015411103139156380.0008.0005.659.0445.208.5011.3368.0020.0020.000.00577112012-11-14 11:00:25.285'gremis'16213015411103139156380.0009.0005.6510.1750.858.5012.7476.5020.0020.000.00

Смотрите пользователь Cash делает изменения. с остатками, логика отрабатывает нормально.(Смотреть по полю quant)
Но потом через 2 минуты (последняя запись в таблице) почему-то происходит изменение таблицы остатков под пользователем gremis, который даже не имеет прав доступа на эту таблицу.


Подскажите куда копать.
Спасибо за внимание. Извините что много букв.
...
Рейтинг: 0 / 0
ASA 11 Работа репликации + триггеры.
    #38038725
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexsmile,
Действия триггеров я так понимаю реплицируются.
В триггере, который пишет в остатки проверяется удаленный ли пользователь?
...
Рейтинг: 0 / 0
ASA 11 Работа репликации + триггеры.
    #38038739
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это я к тому про содержимое триггера, что при такой логике, когда пишут триггером в таблицу, обычно делают так
1) или эту таблицу не реплицируют вообще. Т.е. подразумевая что в каждой нужной точке экземпляр триггера сработает по приходу записи и запишет нужные данные. Т.е. таблица не реплицируется, а данные в ней везде одинаковые
2) Или таблицу реплицируют, но тогда в каждой точке проверяют в триггере удаленный пользователь или нет, чтобы не допустить повторной записи в таблицу. Ведь запись, которую создал триггер в первой точке придет по репликации.
...
Рейтинг: 0 / 0
ASA 11 Работа репликации + триггеры.
    #38038926
alexsmile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
antand,

Да. действие триггеров реплицируются.
В каждом триггере есть условие
if current remote user is null then
.... код для обновлений остатков
end if

dbremote запускается с ключем -t

Я может не внятно объяснил ситуацию.
Вышеуказанное действие происходит в удаленной БД.

Пожалуйста подкиньте идею куда копать.
Спасибо.
...
Рейтинг: 0 / 0
ASA 11 Работа репликации + триггеры.
    #38038959
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexsmile,

Не.. все понятно. Тогда , если вы уверены что в удаленной базе никто не правил, то проверяйте кто в консолидированной базе может корректировать запись, ведь именно оттуда изменение пришло
...
Рейтинг: 0 / 0
ASA 11 Работа репликации + триггеры.
    #38038961
antand
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexsmile,
Еще посмотрите нет ли там

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


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