powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вложенные транзакции при использовании SET XACT_ABORT ON ... ?
1 сообщений из 1, страница 1 из 1
Вложенные транзакции при использовании SET XACT_ABORT ON ... ?
    #32008606
DennisL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как работают вложанные транзакции при использовании опции
SET XACT_ABORT ON ?

Все выглядит примерно так :
Есть несколько SP которые производит некоторые действия над базой, в виде :

CREATE PROCEDURE sp1
@Agr_id
....
AS

SET XACT_ABORT ON
BEGIN TRANSACTION

UPADATE ....
INSERT
IF .. BEGIN
UPDATE ..
INSERT ..
END
INSERT ..
...
COMMIT TRANSACTION

Еще одна SP использует несклько из вышеописанных SP, выглядит примерно так :

CREATE PROCEDURE sp_main
@Inv_id
....
AS

SET XACT_ABORT ON
BEGIN TRANSACTION

INSERT ..
UPDATE ..
SELECT ...
IF .. BEGIN
INSERT
EXEC sp1 @Agr_id ...
END
EXEC sp2
UPADATE ..
EXEC sp3

COMMIT TRANSACTION

Вопросы :
1. При ошибке внутри sp1, sp2 или sp3 будет произведен откат транзакции объявленой в sp_main ?
2. При COMMIT в каждой из вложенных sp на будут ли зафиксированны изменения вызванные операторами INSERT и UPDATE неходящимися до вызоыв вложенной sp ?
3. Имеет ли смысл использовать разделение сложной sp на несколько более простых (для упрощения отладки при большом размере sp), тоесть использование вложенных sp с параметрами вместо процедур(функций), даже если потом эта sp отдельно нигде не используеться ? Что при этом происходит с планом выполнения sp которая состоит из нескольких вложенных sp вызываемых с помощью EXEC ?

P.S. Использую MS SQL Server 7
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вложенные транзакции при использовании SET XACT_ABORT ON ... ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]