Вниз
Скачать: CL | DM;

Объсните разницу триггеров 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.034 c
10-1042011765
McSimm
2003-01-08 10:42
2004.09.26
От человека, не имеющего возможности пользоваться интернетом


1-1094808009
jonik
2004-09-10 13:20
2004.09.26
Создание построителя отчета


3-1093619862
Донской
2004-08-27 19:17
2004.09.26
Locate то работает, то выдает ошибку.


3-1093591496
Sirruf
2004-08-27 11:24
2004.09.26
Грабли с датами в ADO


4-1091445353
the_ram
2004-08-02 15:15
2004.09.26
Tray




   Наверх