eskandary.a
یک شنبه 03 بهمن 1389, 12:18 عصر
سلام
یک سوال در مورد Transaction دارم؟
من 2 جدول دارم و 2 تا sp نوشتم برای insert در این جدول ها؛ توی هر دو sp دارم transaction را چک میکنم.
حالا یک جای برنامه لازم شده این دو sp رو پشت سر هم صدا بزنم. می خوام بدونم چطور میشه چک کزد هر دو sp کامل اجرا بشه و اگر دومی اجرا نشد اثر اولی از بین بره؟
behrouzlo
یک شنبه 03 بهمن 1389, 14:11 عصر
از ساختار Try Catch استفاده کنید و بعد از Roll Back کردن sp دومی با استفاده از RAISERROR یک خطا ایجا کنید و در SP اول در قسمت Catch باز تراکنش را Roll Back کنید.
shgroup
یک شنبه 03 بهمن 1389, 20:02 عصر
از ساختار Try Catch استفاده کنید و بعد از Roll Back کردن sp دومی با استفاده از RAISERROR یک خطا ایجا کنید و در SP اول در قسمت Catch باز تراکنش را Roll Back کنید.
لطفا مثال بزنید ؟!
eskandary.a
یک شنبه 03 بهمن 1389, 20:33 عصر
از ساختار Try Catch استفاده کنید و بعد از Roll Back کردن sp دومی با استفاده از RAISERROR یک خطا ایجا کنید و در SP اول در قسمت Catch باز تراکنش را Roll Back کنید.
سلام
ممنون از شما ولی در صورت امکان بیشتر توضیح دهید (این دو sp را برای نمونه ببینید و توضیح دهید)
CREATE PROCEDURE [dbo].[Sp1]
AS
BEGIN
BEGIN TRY
BEGIN TRANSACTION
INSERT INTO [dbo].[Table_One]
(
/*
Some Fields
*/
)
VALUES
(
/*
Some Value
*/
)
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
INSERT [dbo].[ErrorLog]
(
[UserName],
[ErrorNumber],
[ErrorSeverity],
[ErrorState],
[ErrorProcedure],
[ErrorLine],
[ErrorMessage],
)
VALUES(
CONVERT(sysname, CURRENT_USER),
ERROR_NUMBER(),
ERROR_SEVERITY(),
ERROR_STATE(),
ERROR_PROCEDURE(),
ERROR_LINE(),
ERROR_MESSAGE(),
)
END CATCH
E:
END
و
CREATE PROCEDURE [dbo].[Sp2]
AS
BEGIN
BEGIN TRY
BEGIN TRANSACTION
INSERT INTO [dbo].[Table_Two]
(
/*
Some Fields
*/
)
VALUES
(
/*
Some Value
*/
)
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION
INSERT [dbo].[ErrorLog]
(
[UserName],
[ErrorNumber],
[ErrorSeverity],
[ErrorState],
[ErrorProcedure],
[ErrorLine],
[ErrorMessage],
)
VALUES(
CONVERT(sysname, CURRENT_USER),
ERROR_NUMBER(),
ERROR_SEVERITY(),
ERROR_STATE(),
ERROR_PROCEDURE(),
ERROR_LINE(),
ERROR_MESSAGE(),
)
END CATCH
E:
END
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.