الـTransactions في SQL Server
الـTransaction هي وحدة عمل منطقية تشمل مجموعة من العمليات على قاعدة البيانات (قراءة، إدخال، تحديث، أو حذف) وتُنفذ كوحدة واحدة لضمان سلامة البيانات باستخدام مبدأ ACID.
خصائص Transactions (ACID):
- Atomicity (الذرية):
- العمليات تُنفذ بالكامل أو يتم إلغاؤها بالكامل.
- Consistency (التناسق):
- تضمن أن قاعدة البيانات تبقى في حالة متناسقة بعد انتهاء الـ Transaction.
- Isolation (العزل):
- العمليات داخل الـ Transaction لا تتأثر بعمليات أخرى تعمل بالتوازي.
- Durability (الدوام):
- التغييرات تُحفظ بشكل دائم بعد إتمام الـ Transaction.
We are talked before about [[What is Database#database-is-acid|ACID]]
أوامر إدارة Transactions:
- الـ
BEGIN TRANSACTION
: بدء Transaction جديد. - الـ
COMMIT
: تأكيد التغييرات وحفظها بشكل دائم. - الـ
ROLLBACK
: التراجع عن جميع التغييرات وإعادة الحالة الأصلية.
الفرق بين Commit و Rollback:
الميزة | Commit | Rollback |
---|---|---|
التأثير | يحفظ التغييرات بشكل دائم. | يلغي جميع التغييرات. |
الرجوع للخلف | لا يمكن التراجع بعد COMMIT . | يُعيد قاعدة البيانات للحالة السابقة. |
الاستخدام | لتأكيد العمليات. | للتراجع عند حدوث خطأ. |
مثال عملي:
تحويل أموال بين حسابين:
BEGIN TRANSACTION;
-- خصم من الحساب A
UPDATE Accounts SET Balance = Balance - 100 WHERE AccountID = 1;
-- إضافة للحساب B
UPDATE Accounts SET Balance = Balance + 100 WHERE AccountID = 2;
-- تأكيد التغييرات
COMMIT;
التراجع في حالة خطأ:
BEGIN TRANSACTION;
UPDATE Accounts SET Balance = Balance - 100 WHERE AccountID = 1;
-- خطأ أثناء العملية
IF @@ERROR <> 0
ROLLBACK;
ELSE
COMMIT;
التحكم في مستويات العزل (Isolation Levels):
المستوى | الوصف |
---|---|
READ UNCOMMITTED | يسمح بقراءة البيانات غير المحفوظة (Dirty). |
READ COMMITTED | لا يسمح بقراءة البيانات غير المحفوظة. |
REPEATABLE READ | يمنع تعديل البيانات أثناء القراءة. |
SERIALIZABLE | أعلى مستوى عزل، يمنع القراءة والكتابة. |
تغيير مستوى العزل:
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
BEGIN TRANSACTION;
-- العمليات هنا
COMMIT;
ملاحظات:
- استخدم
SAVEPOINT
لتحديد نقاط يمكنك التراجع إليها. - الـ
ROLLBACK
مفيد عند حدوث خطأ لضمان سلامة البيانات. - الـTransactions مهمة في العمليات الحساسة مثل تحويل الأموال أو إدارة المخزون.