السلام عليكم ورحمة الله وبركاته نواصل معكم ايها الاحبة شرح Transactions ضمن سلسلسة شرح SQL بالعربي, يمكنكم زيارة الدرس السابق من الرابط التالي : شرح TRANSACTIONS الدرس الثاني.
COMMIT [WORK];
هذه الصيغة مدعومة من قواعد البيانات mySQL, SQL Server, Oracle, DB2 .
كما يوفر SQL Server في الصيغة البديلة COMMIT TRANSACTION امكانية لإدخال معامل يحدد اسم المناقلة المراد إتمامها وتكون الصيغة كما يلي :
COMMIT TRANSACTION transaction_name;
BEGIN TRANSACTION
SAVE TRANSACTION beforeChange
UPDATE creditAccount set
creditBalance=creditBalance - 200 where creditNumber=’345276778543’;
ROLLBACK TRANSACTION beforeChange
UPDATE SiteAccount set
SiteBalance=SiteBalance + 200 where accountNumber=345231;
COMMIT TRANSACTION
Update myTable SET ID = 10;
Update Customers SET customerName = ‘Adel’;
وكان خيار الاتمام الآلي لمناقلات قاعدة البيانات مفعلاً سيتم اعتبار كل واحد من هذين الاستعلامين كأنة مناقلة منفصلة وسيتم إتمامها حال تنفيذها , لجعل قاعدة البيانات تعتمد هذين الاستعلامين كمناقلة واحدة لابد من صياغة التعبير بالشكل التالي :
BEGIN WORK
Update myTable SET ID = 10;
Update Customers SET customerName = ‘Adel’;
COMMIT WORK;
لتفعيل او تعطيل خيار الاتمام الآلي للمناقلات يمكننا استعمال التعبير التالي في Oracle :
SET AUTOCOMMIT ON|OFF;
BEGIN TRANSACTION myTransaction
Insert Into Graduated (ID, Name) Values (20, ‘Samer’)
IF @@ERROR <> 0 ROLLBACK TRANSACTION myTransaction
Update Students SET Status = ‘Graduated’ where ID = 20;
COMMIT TRANSACTION myTransaction
نلاحظ هنا :
اتمام او تنفيذ مناقلة :
اذا تم تنفيذ جميع اوامر SQL ضمن مناقلة يمكنك كتابة التعبير COMMIT الذي سيخبر قاعدة البيانات بتأكيد وتثبيت التغييرات التي اجرتها مناقلة, بعد هذه المرحلة لا يمكن التراجع عن المناقلة بإستخدام التعبير ROLLBACK .الصيغة التي يحددها المعيار SQL99 لإتمام مناقلة هي :
COMMIT [WORK];
هذه الصيغة مدعومة من قواعد البيانات mySQL, SQL Server, Oracle, DB2 .
كما يوفر SQL Server في الصيغة البديلة COMMIT TRANSACTION امكانية لإدخال معامل يحدد اسم المناقلة المراد إتمامها وتكون الصيغة كما يلي :
COMMIT TRANSACTION transaction_name;
مثال:
بالرجوع الى مثالنا في الدرس السابق سنقوم باستخدام التعابير الخاصة بالمناقلة لبدء المناقلة وردها وإتمامها :BEGIN TRANSACTION
SAVE TRANSACTION beforeChange
UPDATE creditAccount set
creditBalance=creditBalance - 200 where creditNumber=’345276778543’;
ROLLBACK TRANSACTION beforeChange
UPDATE SiteAccount set
SiteBalance=SiteBalance + 200 where accountNumber=345231;
COMMIT TRANSACTION
تنفيذ المناقلة آلياً :
من قواعد البيانات التي تدعم الاتمام الآلي مثل SQL Server و MySQL , الاتمام الآلي يعني ان قاعدة البيانات ستعامل كل استعلام على اساس كونة مناقلة منفصلة حتى بدون استخدام اوامر البداية او الاتمام او رد مناقلة, وبعد ان يتم تنفيذ كل استعلام سوف يتم اتمام المناقلة تلقائياً ولا يمكن ردها .مثال :
اذا كان لدينا الصيغة التالية :Update myTable SET ID = 10;
Update Customers SET customerName = ‘Adel’;
وكان خيار الاتمام الآلي لمناقلات قاعدة البيانات مفعلاً سيتم اعتبار كل واحد من هذين الاستعلامين كأنة مناقلة منفصلة وسيتم إتمامها حال تنفيذها , لجعل قاعدة البيانات تعتمد هذين الاستعلامين كمناقلة واحدة لابد من صياغة التعبير بالشكل التالي :
BEGIN WORK
Update myTable SET ID = 10;
Update Customers SET customerName = ‘Adel’;
COMMIT WORK;
لتفعيل او تعطيل خيار الاتمام الآلي للمناقلات يمكننا استعمال التعبير التالي في Oracle :
SET AUTOCOMMIT ON|OFF;
وفي SQL Server نستخدم التعبير التالي :
SET IMPLICIT_TRANSACTIONS ON|OFF;
اما في DB2
فيتم اختيار الخيار من نافذة Command Center >Options .
اختبار الخطأ في المناقلة :
هذا الاختبار يساعدنا في اتخاذ قرار حول اتمام المناقلة او ردها ,نحن هنا لن ندخل في تفاصيل ادارة الاخطاء ومعالجتها سنفرد بحث خاص لمعالجة هذا الموضوع لاحقا ان شاء الله ولكن لكي تصبح فكرة المناقلة واستخدامها مكتملة فلابد لنا من استخدام تقنية اختبار الخطأ هنا.مثال :
ليكن لدينا المناقلة التالية :BEGIN TRANSACTION myTransaction
Insert Into Graduated (ID, Name) Values (20, ‘Samer’)
IF @@ERROR <> 0 ROLLBACK TRANSACTION myTransaction
Update Students SET Status = ‘Graduated’ where ID = 20;
COMMIT TRANSACTION myTransaction
نلاحظ هنا :
- بدأنا المناقلة بإسم myTransaction .
- حاولنا اضافة سجل المتخرج Samer’ ' ذو الرقم 20 الى جدول المتخرجين .
- ثم اختبرنا ظهور أي خطأ.
- فاذا كان هناك خطأ ما سوف يتم رد المناقلة والتراجع عن الاستعلام بالتعبير ROLLBACK . او سيتم تنفيذ الاستعلام الثاني الذي سيقوم بتعديل وضع الطالب سمير في جدول الطلاب, ثم سيتم اتمام المناقلة بالتعبير COMMIT TRANSACTION .
نكتفي بهذا القدر ونلتقي في الدرس القادم وسيكون حول المناقلات المتزامنة ودرجات العزل, اذا لم تكن مشترك في المدونة اشترك الان او قم بمتابعتنا على جوجل بلس او سجل اعجابك بصفحتنا على الفيس بوك لتصلك كل منشور نقوم بنشرة ,,, كما يمكنك تحميل تطبيقنا من جوجل بلاي وتابع احدث اخبار التقنية المضافة في التطبيق اولا بأول.
إرسال تعليق
لا تبخل علينا باقتراحك او قم بمشاركة الموضوع ليستفيد الاخرين ايضاً شكرا لزيارتك عزيزي الزائر