Arghavan_Reza
پنج شنبه 26 اردیبهشت 1387, 17:48 عصر
دوستان گرامی متن تریگر زیر را ملاحظه فرمایید:
CREATE TRIGGER [Table1_Update] ON [dbo].[Table1]
FOR INSERT, UPDATE
AS
IF ( <Some Conditions> )
BEGIN
RAISERROR ( <Error Message> , 16, 1)
ROLLBACK TRAN
END
چنانچه هنگام درج یا ویرایش اطلاعات، شرط <Some Conditions> برقرار باشد، پیغام <Error Message> به نرم افزار منتقل میگردد و پس از آن دستور ROLLBACK TRAN اجرا میشود. این دستور باعث می شود تا رکورد دارای خطا و کلیه تغییرات داده شده قبل از وقوع خطا (در همان Transaction ) ثبت نشده و RollBack شود. و فقط اطلاعات تغییر داده شده ی پس از آن رکورد در بانک ذخیره شود.
سوال:
در متن تریگر فوق چه اصلاحی باید صورت پذیرد تا رکوردهای ثبت شده ی قبل از وقوع خطا RollBack نشوند؟ بعبارتی هنگام وقوع خطا فقط رکورد مشکل دار ثبت نشود و کلیه تغییرات قبل و بعد از آن ثبت شوند؟
یا حق...
CREATE TRIGGER [Table1_Update] ON [dbo].[Table1]
FOR INSERT, UPDATE
AS
IF ( <Some Conditions> )
BEGIN
RAISERROR ( <Error Message> , 16, 1)
ROLLBACK TRAN
END
چنانچه هنگام درج یا ویرایش اطلاعات، شرط <Some Conditions> برقرار باشد، پیغام <Error Message> به نرم افزار منتقل میگردد و پس از آن دستور ROLLBACK TRAN اجرا میشود. این دستور باعث می شود تا رکورد دارای خطا و کلیه تغییرات داده شده قبل از وقوع خطا (در همان Transaction ) ثبت نشده و RollBack شود. و فقط اطلاعات تغییر داده شده ی پس از آن رکورد در بانک ذخیره شود.
سوال:
در متن تریگر فوق چه اصلاحی باید صورت پذیرد تا رکوردهای ثبت شده ی قبل از وقوع خطا RollBack نشوند؟ بعبارتی هنگام وقوع خطا فقط رکورد مشکل دار ثبت نشود و کلیه تغییرات قبل و بعد از آن ثبت شوند؟
یا حق...