You are currently viewing ما هو SQL Transaction

ما هو SQL Transaction

ال SQL Transaction هو مجموعة من الايعازات او Queryالمطلوب تنفيذها مرة واحدة داخل قاعدة البيانات .او التراجع عن تنفيذها اذا حدث خطأ بوحدة منها.

مرات نحتاج انه انفذ اكثر من ايعاز على اكثر من جدول بوقت واحد و بشكل متتابع مثلا سحب رصيد من بطاقة كردت كارد انت لازم اتعدل حساب البطاقة انتقصه بالمبلغ المسحوب واتزيد مجموع المبالغ المسحوبة من ATM وايضا اتسجل العملية ووقت التنفيذ

ناخذ مثال حتى يتوضح الموضوع وهذا مثال عملي من داخل قاعدة بيانات لاحد انظمتنا هنا نحن نضيف جهة لكن نحتاج انضيف الجهة وايضا انسجل من قام بالاضافة لجدول الاحداث بالنظام لاغراض الرقابة

begin tran
begin try
insert into Direction_tbl
(DirName,DirTypeid,Relationid,Unitid,Winerid,UserId)
values
(@DirName,@DirTypeId,@Relationid,@Unitid,@Winerid,@UserId)

declare @dir_id int=ident_current(‘Direction_tbl’)
declare @str nvarchar(500)=N’اضافة المستخدم ‘+(select nickname from user_tbl where user_id=@UserId)+’ الجهة’+’ ‘+ @DirName

insert INTO log_users
(log_desc,dt_time,userid)
values
(@str,getdate(),@UserId)

commit tran
end try
BEGIN CATCH
rollback tran
END CATCH;

ما هو commit؟هو تثبيت الايعازات وارسال البيانات الى القاعدة بشكل نهائي وانهاء Transaction

ما هو Rollback؟تعني انك تريد التراجع فيما قمت بتنفيذه.والعودة الى الوضع عند begin tran

خصائص ال Transaction

لل Transaction اربعة سمات اساسية تختصر في الكلمة التالية ACID

Atomic 

تعني ان كل ما داخل ال Transaction يتم عمل Commit له تنفيذه غلى القاعدة او Rollback بالكامل

Consistent  

تعني انه يحافظ على اتساق المعلومات داخل قاعدة البيانات فمثلا في المثال السابق ال Transaction يضمن تسجيل المستخدم الذي قام باضافة الجهة الجديدة

Durable 

تعني انه بمجرد ان يتم اكتمال ال Transaction كل التعديلات التي حدثت داخله تكون دائمة ومكتوبة داخل قاعدة البيانات sql.

Isolation

العزل و تعني ان كل ما يحدث داخل ال Transaction يكون في درجة من العزل عن ال Transactions الاخر

نصائح عملية عند استخدام Transaction او Transaction best practices

  1. قلل الى اكبر حد الايعازات داخل Transaction
  2. استرجع البيانات خارج Transaction اذا كان ذلك بالامكان بواسطة ال select

هل يوجد بالسي شارب عملية مشابهة؟ نعم تستطيع تطلع على الرابط

https://www.c-sharpcorner.com/UploadFile/87b416/sql-transaction/