Форум: "Базы";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];
ВнизОбъсните разницу триггеров Before и After Найти похожие ветки
← →
S@shka © (2004-08-25 23:45) [0]Например, UPDATE
before - понятно что физически еще записть не обнавлена и новые значения где то хранятся
after - видимо обновлена.
Но что мне это дает???
Помогите уловить разницу в применении before и after
← →
jack128 © (2004-08-26 00:15) [1]в Before ты можешь изменить вставляемы значения, а в After - нет..
в если ты подымешь исключение в Before то запись не будет добавлена на таблицу, иначе - будет..
← →
Anatoly Podgoretsky © (2004-08-26 00:16) [2]Один до выполнения операции, а другой после.
← →
Sergey13 © (2004-08-26 09:50) [3]2[1] jack128 © (26.08.04 00:15)
>в если ты подымешь исключение в Before то запись не будет добавлена на таблицу, иначе - будет..
Сомневаюсь я однако.
← →
Zacho © (2004-08-26 09:58) [4]Неважно, произошло исключение в After или в Before, все равно при этом изменения отменятся.
← →
YurikGL © (2004-08-26 09:59) [5]
> Sergey13 © (26.08.04 09:50) [3]
То что если в Before поднять исключение и запись не будет добавлена/удалена/изменена - это точно
← →
-SeM- (2004-08-26 10:08) [6]В Before, например, можешь подготавливать данные для других таблиц.
В After - запись в лог, post_event.
← →
Sergey13 © (2004-08-26 10:08) [7]2[5] YurikGL © (26.08.04 09:59)
Мои сомнения вызвали последние слова той фразы "иначе - будет". 8-)
← →
Zacho © (2004-08-26 10:43) [8]Sergey13 © (26.08.04 10:08) [7]
Правильные сомнения :)
← →
jack128 © (2004-08-26 13:55) [9]
> Мои сомнения вызвали последние слова той фразы "иначе
> - будет". 8-)
> Правильные сомнения :)
не правильные сомнения. Запись будет добавлена, только вот потом это добавление можно отменить ;-) Если бы запись не была добавлена, то повторный селект в той же транзакции её не увидел бы.
← →
Zacho © (2004-08-26 19:34) [10]
>jack128 © (26.08.04 13:55) [9][Ответить]
>
> не правильные сомнения.
Правильные. :) Просто сам пост [1]сформулирован весьма расплывчато и подразумевает разные толкования.
Например, в before insert триггерах может и не возникнуть исключения, а при проверке FK (а она присходит после выполнения триггеров) - возникнет. И запись вставлена не будет. Или exception в after insert - запись тоже вставлена не будет, в чем легко убедиться.
← →
S@shka © (2004-08-26 23:21) [11]Все равно я не понял ...
А в чем я могу выиграть используя триггер After?
Походу все может быть сделано в Before???
И еще ....
Пусть имеем
ID Value
1 aaaa
4 bbbb
пишем BeforeUpdate
if (old.value is null)
then begin
insert into Table (new.id,new.value);
end
....
запрос
update Table set ID=2, Value = "vvv" where ID = 2 and Value = "vvvv"
ничего ни делает
Нужен вообщем то для :)) если записи нет - добавить, если есть - обновить.
Insert видимо в beforeUpdate не делается :)
Да???
← →
Deniz © (2004-08-27 06:17) [12]Тут нужно не триггером, а ХП делать!
вот хороший пример: http://www.ibase.ru/devinfo/testiu.htm
А в тригере after update можно писАть, например, логи.Create trigger ... after update position 99 ...
в этой ситуации(если конечно триггер последний) у тебя есть уверенность, что запись обновилась и никаких exception не было.
← →
Sergey13 © (2004-08-27 09:09) [13]2[11] S@shka © (26.08.04 23:21)
>А в чем я могу выиграть используя триггер After?
>Походу все может быть сделано в Before???
Ну и делай. Кто мешает то.
>update Table set ID=2, Value = "vvv" where ID = 2 and Value = "vvvv"
>ничего ни делает
А он и не должен ничего делать по твоему примеру. Т.к. события апдейта (и следовательно срабатывания тригера) не происходит.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.037 c