Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.22;
Скачать: CL | DM;

Вниз

Использование триггеров   Найти похожие ветки 

 
AlexA ©   (2003-08-29 10:19) [0]

Имееться две таблицы. Между ними связь 1-М.
В первой таблице Т1 иметься поле "Количество".
И во второй таблице Т" иметься поле "Количество".
Необходимо отслеживать, условие: Сумма для связанных записей для Т2 не превышала количество для Т1.
Для чего создаю в Т1 поле "Использованое количество" Kolvo_U
и в триггерах для Т2 пытаюсь изменять указаное поле, примерно следующим образом.
Update t1 set Kolvo_U = old.Kolvo_U + :K
Вопрос в следующем: Т.к. тригеры выполняются в рамках транзакции не может ли такое построение привести к неправильной записи в поле Kolvo_U


 
stud ©   (2003-08-29 10:43) [1]

так зачем это отслеживать???
что характеризует "количество" в Т1 и Т2?


 
AlexA ©   (2003-08-29 10:50) [2]

>stud
по предметной области это необходимо. В случае: Sum("количество") в Т2 превысит "количество" в Т1 вызываеться исключение


 
Sergey13 ©   (2003-08-29 10:52) [3]

AlexA © (29.08.03 10:19)
>Вопрос в следующем: Т.к. тригеры выполняются в рамках транзакции не может ли такое построение привести к неправильной записи в поле Kolvo_U
Если правильно работать с транзакциями - не должно.

2stud © (29.08.03 10:43) [1]
Например количество поставки и остаток. Отход от нормализации налицо, но производительность повышает.


 
AlexA ©   (2003-08-29 11:03) [4]

Sergey13 © (29.08.03 10:52) [3]
Поясни как правильно работать с транзакциями?


 
Sergey13 ©   (2003-08-29 11:11) [5]

2AlexA © (29.08.03 11:03) [4]
Начало транзакции
Изменения
IF нормально - COMMIT
else ROLLBACK


 
AlexA ©   (2003-08-29 11:19) [6]

Sergey13 © (29.08.03 11:11) [5]
А как можно по другому :)
Вот я и сомневаюсь не может ли быть ситуации когда для двух транзакций будет состояние "нормально". Например: одна транзакция запись встаила, но еще не потрвердила изменения.


 
Sergey13 ©   (2003-08-29 11:34) [7]

2AlexA © (29.08.03 11:19) [6]
>А как можно по другому :)
Не знаю 8-)

>Вот я и сомневаюсь не может ли быть ситуации когда для двух транзакций будет состояние "нормально". Например: одна транзакция запись встаила, но еще не потрвердила изменения.

Проверяй если сомневаешься. Значение поля Kolvo_U у тебя должно быть равно сумме из Т2. Проверяй периодически, если охота. Один запрос и сомнения либо подтверждаются либо рассеиваются. 8-)


 
AlexA ©   (2003-08-29 11:42) [8]

>Sergey13 © (29.08.03 11:34) [7]
спасибо :-)


 
stud ©   (2003-08-29 12:05) [9]

я так понимаю - ты что-то списываеш и что-то добаляеш?
так поставь триггер на те таблицы которые в которых это фиксируется .
и эти операции проводи в рамках одной транзакции


 
MsGuns ©   (2003-08-29 12:27) [10]

У меня есть один проект, где делается цепочка изменений в около 2 десятков таблиц за раз. Все в одной транзакции. После того, как я увидел как это работает, я расплевался с Парадоксом.


 
Zacho ©   (2003-08-29 13:10) [11]

Да нормально все будет, правда можно напороться на deadlock (на самом деле - обычный lock conflict), но его можно и обработать.



Страницы: 1 вся ветка

Текущий архив: 2003.09.22;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
7-71967
oduvan
2003-07-10 10:25
2003.09.22
Hint WindowsXP. Как показать у моего приложения?


1-71755
ruslan_as
2003-09-10 10:18
2003.09.22
Как вложить файл PDF в мой EXE


14-71870
Jacob
2003-09-04 13:17
2003.09.22
Расписание авиарейсов


14-71942
Empleado
2003-09-01 16:31
2003.09.22
Вот тут это самое, как его ...


6-71781
test
2003-07-23 18:20
2003.09.22
Как передать по средствам TCP TStringList c клиента на сервер?