Суть вашей проблемы заключается в следующем:
IF @cnt_jrn > 0
BEGIN TRANSACTION JD_Jrn
Все, что вам нужно будет сделать, это только начать новую транзакцию, если @cnt_jrn > 0
.Это все еще выполнит весь код ниже независимо от условия.Так что если @cnt_jrn <= 0
, он будет звонить commit transaction JD_Jrn
, даже не начав его.
Вам необходимо заключить тело любого мульти-оператора if
тело с begin
и end
.Например:
IF @cnt_jrn > 0
BEGIN
BEGIN TRANSACTION JD_Jrn
... code ...
END
Но вы заключаете в транзакции одиночные операторы insert
и update
, что необязательно.Операции SQL гарантированно будут атомарными, поэтому вам нужна транзакция, только если вы выполняете несколько операций.