Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.48 MB
Время: 0.059 c
4-1092305325
Sur
2004-08-12 14:08
2004.09.26
ParamStr(X)


3-1093591590
Chainik
2004-08-27 11:26
2004.09.26
Как реализовать запрос?


1-1094814970
redlord
2004-09-10 15:16
2004.09.26
как убить все объекты одним ударом


4-1092324892
Ivane
2004-08-12 19:34
2004.09.26
Работа со сканером


3-1093431748
lehich
2004-08-25 15:02
2004.09.26
ADOQuery подскажите plz





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский