العمليات Transactions

من موسوعة حسوب
< SQL
مراجعة 13:27، 14 يناير 2018 بواسطة Nourtam (نقاش | مساهمات)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

العملية هي مجموعة من التعديلات التي تتم في قاعدة البيانات وفق تسلسل منطقي، وينتج عنها بعض التغييرات في القاعدة كحذف سجل أو تعديل بيانات أو إنشاء سجل جديد، هذه كلها عبارة عن عمليات، وتصبح هذه التغييرات جزءًا دائمًا من قاعدة البيانات إذا نُفذَّت بشكل تامّ دون أخطاء، أما في حال حدوث أيّ خطأ فيُتراجَع عن هذه التغييرات وتعود قاعدة البيانات كما هي قبل إنجاز العمليات عليها.

التحكم بالعمليات

توجد أربعة أوامر للتحكم بالعمليات وهي:

  • COMMIT: لحفظ التغييرات
  • ROLLBACK: للتراجع عن التغييرات واستعادة البيانات بحالتها السابقة.
  • SAVEPOINT: لإنشاء نقاط استعادة ضمن مجموعات العمليات بهدف إمكانية التراجع واستعادة البيانات.
  • SET TRANSACTION: لتسمية العملية.

مثال

إذا كان الجدول الآتي customers موجودًا في قاعدة البيانات:

Bill OrderID FullName CustomerID
160 0291 Abd al-Salam Hadi 1156
170 0302 Ahmad Mostafa 1157
210 0203 Reem Hammad 1158
350 0294 Abd Allah Sadiq 1159
185 0255 Raghad al-Hamdan 1160
165 0276 Abd al-Razzaq Salloum 1161
175 0247 Hussam Siraj 1162

تبدأ العمليات في الشيفرة الآتية باستخدام BEGIN TRANSACTION لتُجرَى العمليات بعدها:

BEGIN TRANSACTION;  
DELETE FROM customers  
  WHERE Bill>200;
SAVEPOINT sp;
INSERT INTO customers VALUES(1163, 'Mohammad Baqi', 0278,180);
DELETE FROM customers  
  WHERE FullName LIKE 'H%';
ROLLBACK TO sp;

إذ تحذف بدايةً كل السجلات التي قيمة الفاتورة فيها أكبر من 200 وتُحفظ نقطة رجوع بعدها (تمكن العودة لها فيما بعد) ثم يُضاف سجل جديد للجدول ويحذف كل سجل يبدأ فيه الاسم بحرف H، ويُعاد الجدول بالتعليمة الأخيرة لحالته المسبقة الحفظ عند نقطة الرجوع sp (أي لن تُجرى تعديلات إضافة السجل وحذف السجلات باسمٍ يبدأ بحرف H).

وسيصبح الجدول بشكل نهائي على النحو الآتي:

Bill OrderID FullName CustomerID
160 0291 Abd al-Salam Hadi 1156
170 0302 Ahmad Mostafa 1157
185 0255 Raghad al-Hamdan 1160
165 0276 Abd al-Razzaq Salloum 1161
175 0247 Hussam Siraj 1162

مصادر