Конференция "Базы" » До какого момента откатится транзакция [D7, MSSQL]
 
  • картман © (21.06.10 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 © (21.06.10 14:42) [1]
    По идее должна откатиться. Лень попробовать?
    Использовать управление транзакциями в процедурах - не самая лучшая идея.
  • картман © (21.06.10 15:03) [2]

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


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

    каюсь


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

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

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

    В клиенте, т.е. на самом верхнем уровне. Прикинь, что будет, если ты свою p_my_proc захочешь выполнить много раз подряд и в рамках единой транзакции.
  • Ega23 © (21.06.10 16:04) [5]

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


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


    да я вообще противник триггеров - по ТЗ надо именно его впендюрить
 
Конференция "Базы" » До какого момента откатится транзакция [D7, MSSQL]
Есть новые Нет новых   [134432   +20][b:0][p:0]