Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос о триггерах [D4, IB5.x]


Страницы:   1 2

андрей123 ©   (2005-04-22 08:49:00) 

В IB создан триггер BEFORE DELETE для таблицы Приход для проверки условия Приход№1<Остаток. Можно ли в триггере отменить удаление записи или сделать UPDATE если Приход№1>Остаток.


Desdechado   (2005-04-26 13:04:00) [1]

если по пойманному exception сделать откат транзакции, то, ес-но, нет


Johnmen   (2005-04-26 09:44:00) [2]

Думаю, что да. Можно же проверить...


андрей123   (2005-04-26 08:02:00) [3]

to Johnmen © ,Desdechado ©

В свете вашего диалога возник вопрос:

Если в триггере изменяется своя (та в которой создан триггер) таблица то триггер "вызывается" еще раз и допустим там происходит exception. Сохранятся ли изменения сделанные первым триггером ?


Johnmen   (2005-04-25 18:13:00) [4]

Хм... На что смотреть ? На то, как выполнится COMMIT ? И при этом без ошибки выполнится ?
Да без проблем. Ты и сам можешь...


Desdechado   (2005-04-25 18:09:00) [5]

Ок, я снова впопыхах выразился некорректно. Надо - "транзакцию, в которой поднято exception".

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


Johnmen   (2005-04-25 18:03:00) [6]

>И я думаю, ты понимаешь, что закоммитить транзакцию, которая
>подняла exception, нельзя без дополнительных махинаций с данными.

Нет. Не понимаю. exception поднимает не транзакция, а сервер.
Не зависимо от "поднятия" коммит я сделаю...


Desdechado   (2005-04-25 17:42:00) [7]

Если коммититься с 10-й попытки, после устранения всех ошибок, то прямой связи нет. Но факт "устранения ошибок" как-то все-таки связан с ними, не так ли?
И я думаю, ты понимаешь, что закоммитить транзакцию, которая подняла exception, нельзя без дополнительных махинаций с данными.

> я чувствую, "твоя моя непонимай"
ай, одни эмоции :)


Johnmen   (2005-04-25 17:04:00) [8]

>зато успешность коммита очень с ними связана

С ними, это с ошибками ? Да никак не связана !

Вобщем, я чувствую, "твоя моя непонимай"...:)))


Desdechado   (2005-04-25 16:34:00) [9]

это=[15]
зато успешность коммита очень с ними связана (это как про рыбу и селедку)
а по поводу желаний - иногда и без повода (читай - транзакции) хочется коммититься :)
да только не об этом речь, наверно


Johnmen   (2005-04-25 14:55:00) [10]

>Это, имхо, логично следует из определения понятия транзакции.

Хм... Что это "это"?

>Но я подразумевал именно завершающуюся коммитом транзакцию.

Появление ошибок никак не связано с успешностью коммита.
Более того, желание закоммитить может возникнуть после получения ошибки...


Desdechado   (2005-04-25 13:05:00) [11]

Это, имхо, логично следует из определения понятия транзакции.
Хотя, если философски подойти к вопросу, то "нормальное течение транзакции" может быть любым, в том числе и с прерываниями, с откатами и т.д. Но я подразумевал именно завершающуюся коммитом транзакцию.


Johnmen   (2005-04-25 12:07:00) [12]

Странные слова ты говоришь... Ты их сам придумал или прочёл где-то ? Если второе, то приведи, пожалуйста, источник.


Desdechado   (2005-04-25 11:38:00) [13]

а то, что прерывание нормального течения одного из элементов транзакции является прерыванием нормального течения самой транзакции, о чем я и говорил в [11]


Johnmen   (2005-04-25 11:27:00) [14]

>странная мысль...

Не возьмусь судить о твоих мыслях :)

Выполняются в контексте, ес-но. Ну и что?


Desdechado   (2005-04-25 11:18:00) [15]

так, тогда стоит разобраться - а что, триггер/процедура вне транзакции выполняются, что ли?
странная мысль...


Johnmen   (2005-04-25 11:04:00) [16]

>Desdechado ©   (25.04.05 10:57) [11]
>exception прерывает нормальное течение транзакции,

Да нет же. Он может лишь "прервать нормальное течение" триггера/процедуры. Тр-ия здесь непричём....


Desdechado   (2005-04-25 10:57:00) [17]

2 Johnmen
признаю, выразился некорректно :)
exception прерывает нормальное течение транзакции, а обработать это можно по-разному
я просто имел ввиду, что Rollback, о котором сказано DrPass, как раз отменит в этой ситуации всю транзакцию


DrPass   (2005-04-23 20:22:00) [18]

Ну, если человек машинально пишет
except
 Transaction.Rollback;
end;
...
:)


Johnmen   (2005-04-23 20:02:00) [19]

>Desdechado ©  (22.04.05 19:10) [8]
>exception отменяет текущую транзакцию целиком

Эт ты загнул...:)


Desdechado   (2005-04-22 19:10:00) [20]

exception отменяет текущую транзакцию целиком
если это только удаление записи в таблице с триггером, то отменится удаление записи - вручную не обязательно (а иногда и вредно) что-то еще делать


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо