Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

До какого момента откатится транзакция   Найти похожие ветки 

 
картман ©   (2010-06-21 13:35) [0]

выполняю процедуру: exec p_my_proc

create procedure p_my_proc
as
begin
 begin transaction

 insert into table1 (val)
   values (1)
 commit transaction
end;

на таблицу table1 есть триггер на вставку:
create trigger t_my_trigger on table1 after insert
as
begin
 exec p_another_proc
end;

create procedure p_another_proc
as
begin
...
end

если в p_another_proc произойдет ошибка и я в ней откачу транзакцию, откатятся ли изменения, сделанные p_my_proc?

MS SQL Server 2005


 
Sergey13 ©   (2010-06-21 14:42) [1]

По идее должна откатиться. Лень попробовать?
Использовать управление транзакциями в процедурах - не самая лучшая идея.


 
картман ©   (2010-06-21 15:03) [2]


> Sergey13 ©   (21.06.10 14:42) [1]


> По идее должна откатиться. Лень попробовать?

каюсь


> Использовать управление транзакциями в процедурах - не самая
> лучшая идея.

ээээ... а где ЕЩЕ ими управлять? И почему не лучшая? Как делаешь ты?


 
12 ©   (2010-06-21 15:23) [3]


> должна откатиться


 
Sergey13 ©   (2010-06-21 15:59) [4]

> [2] картман ©   (21.06.10 15:03)
> ээээ... а где ЕЩЕ ими управлять? И почему не лучшая? Как
> делаешь ты?

В клиенте, т.е. на самом верхнем уровне. Прикинь, что будет, если ты свою p_my_proc захочешь выполнить много раз подряд и в рамках единой транзакции.


 
Ega23 ©   (2010-06-21 16:04) [5]


> ээээ... а где ЕЩЕ ими управлять? И почему не лучшая? Как
> делаешь ты?


А в MSSQL необходимость использование триггера - вообще штука такая... весьма спорная, вобщем. Это в IB\FB триггеры штука действительно удобная и даже рекомендуемая (ИМХО, в основном из-за убогости ХП).
В MSSQL хранимкам несколько большую роль можно отвести, соответственно пропадает необходимость в триггерах (за ну очень редким исключением, мне за 8 лет работы с MSSQL попалась всего одна реальная задача, где триггер действительно был уместен).


 
картман ©   (2010-06-21 16:32) [6]


> Sergey13 ©   (21.06.10 15:59) [4]
>
> > [2] картман ©   (21.06.10 15:03)
> > ээээ... а где ЕЩЕ ими управлять? И почему не лучшая? Как
> > делаешь ты?
>
> В клиенте, т.е. на самом верхнем уровне.

думал, это моветон


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

я так не умею(идеологически)


> Ega23 ©   (21.06.10 16:04) [5]


да я вообще противник триггеров - по ТЗ надо именно его впендюрить



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.174 c
3-1280406421
Alekcey
2010-07-29 16:27
2013.03.22
raised exception ... in module IDODBC32.DLL


4-1261716293
GENAONYX
2009-12-25 07:44
2013.03.22
Матричные принтеры, печать на рулоны в XP


2-1346501857
Петя
2012-09-01 16:17
2013.03.22
Перебор символов из текстового файла


15-1331654585
Unknown user
2012-03-13 20:03
2013.03.22
Альтернатива GetTickCount


15-1329424202
Юрий
2012-02-17 00:30
2013.03.22
С днем рождения ! 17 февраля 2012 пятница