آموزش SQL Transaction

آموزش SQL Transaction

بسم الله الرحمن الرحیم

آموزش SQL Transaction

در این بخش قصد دارم مدیریت تراکنش های اسکیوال را به صورت مختصر توضیح دهم

توسط متغییر Global، @@Error می توانیم شماره خطا را بازیابی نماییم اگر خطایی داشته باشیم مقدار این متغییر از صفر بزرگتر است در غیر این صورت مقدار آن صفر است و در صورتی که از این متغییر استفاده کنیم مجددا مقدار این متغییر صفر می گردد

همچنین جهت خواندن شماره خطا می توانیم از Error_Number() استفاده کنیم و جهت چاپ متن خطا از Error_Message استفاده می کنیم

جهت ایجاد یک خطا به صورت دستی می توانیم از RAISERROR استفاده کنیم

مثال


    RAISERROR('خطایی رخ داده است',16,1)

به دلیل وجود کاراکترهای فارسی و انگلیسی جای متن خطا از ابتدا به انتها منتقل شده به همین دلیل تصویری در انتهای مطلب قراردادم که گویا ی موضوع باشد

بسم الله الرحمن الرحیم

آموزش SQL Transaction

در این بخش قصد دارم مدیریت تراکنش های اسکیوال را به صورت مختصر توضیح دهم

توسط متغییر Global، @@Error می توانیم شماره خطا را بازیابی نماییم اگر خطایی داشته باشیم مقدار این متغییر از صفر بزرگتر است در غیر این صورت مقدار آن صفر است و در صورتی که از این متغییر استفاده کنیم مجددا مقدار این متغییر صفر می گردد

همچنین جهت خواندن شماره خطا می توانیم از Error_Number() استفاده کنیم و جهت چاپ متن خطا از Error_Message استفاده می کنیم

جهت ایجاد یک خطا به صورت دستی می توانیم از RAISERROR استفاده کنیم

مثال


    RAISERROR('خطایی رخ داده است',16,1)

به دلیل وجود کاراکترهای فارسی و انگلیسی جای متن خطا از ابتدا به انتها منتقل شده به همین دلیل تصویری در انتهای مطلب قراردادم که گویا ی موضوع باشد

عدد 16 محدوده خطا را مشخص می کند بهتر است همیشه از این عدد استفاده کند چون این عدد خطای ایجاد شده را به برنامه ی شما (مثلا سی شارپ) نیز ارسال می کند.

کاربرد این دستور برای مواردی است که شما می خواهید در صورت برقرار نشدن یک شرط دستورات خاتمه یابد مثلا برای جلوگیری از درج یک رکورد جدید در جدول کاربران با نام کاربری که قبلا ثبت شده است.

در مواردی که شما می خواهید در یک تراکنش تنها بخشی را خاتمه دهید ولی تراکنش همچنان ادامه داشته باشد کافی است که شما از دستور Save Point استفاده نمایید

مثال


BEGIN TRAN PARRNT
            INSERT INTO USERS(userName,[password]) VALUES ('A','A')
            PRINT 'INSERTED A'
                              BEGIN TRY
                                          SAVE TRAN INSERT_PART  
                                       RAISERROR ('خطایی رخ داده است',16,1)
                                                INSERT INTO USERS(userName,[password]) VALUES ('B','B')   
                                            PRINT 'INSERTED B'
                              END TRY
                              BEGIN CATCH
                                          ROLLBACK TRAN INSERT_PART
                              END CATCH
            INSERT INTO USERS(userName,[password]) VALUES ('C','C')
            PRINT 'INSERTED C'
COMMIT TRAN PARENT

 

SavePoint

نظرات یا سوالات خودرا با ما درمیان بگذارید

0912 097 5516 :شماره تماس
0713 625 1757 :شماره تماس