Как сделать так, чтобы трасанкция покрывала несколько хранимых процедур? - PullRequest
3 голосов
/ 22 октября 2009

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

Я работаю с SQL-SERVER 2008

Ответы [ 4 ]

4 голосов
/ 22 октября 2009
begin transaction
begin try
  exec proc_1
  exec proc_2
  exec proc_3
  commit transaction
end try
begin catch
  rollback transaction
end catch
2 голосов
/ 22 октября 2009

Вы можете создать одну хранимую процедуру, которая запускает транзакцию, а затем вызывает другие хранимые процедуры. Если какая-либо из внутренних хранимых процедур завершится неудачно, вы можете откатить транзакцию. Если вы сообщите нам, какую платформу базы данных вы используете (MS SQL Server, MySQL и т. Д.), Люди смогут предложить более конкретные решения.

1 голос
/ 22 октября 2009

Не могу описать решение лучше, чем это.

Обработка ошибок SQL Server во вложенных процедурах

1 голос
/ 22 октября 2009

Транзакции обычно находятся на уровне соединения, поэтому, если вы хотите контролировать транзакцию через код API, вы можете использовать тот же «объект транзакции».

.Net пример http://msdn.microsoft.com/en-us/library/2k2hy99x.aspx с использованием ado.net

...