![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос о триггерах [D4, IB5.x]
андрей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 отменяет текущую транзакцию целиком
если это только удаление записи в таблице с триггером, то отменится удаление записи - вручную не обязательно (а иногда и вредно) что-то еще делать