المعاملة (Transaction) تنفّذ مجموعة من العمليات كوحدة واحدة: إما تنجح كلها معًا، أو تُلغى كلها معًا. لا توجد حالة وسط.
المثال الكلاسيكي: تحويل أموال
START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;
COMMIT;
لو انقطع الخادم بعد الخصم وقبل الإضافة، ستضيع 100 من الحساب الأول. مع المعاملة، إما يتم الخصم والإضافة معًا، أو لا يحدث شيء.
إلغاء المعاملة
ROLLBACK; -- undo everything since START TRANSACTION
أين تهم؟
في كل تطبيق يحتاج دقة عالية: البنوك، والمتاجر (خصم المخزون مع إنشاء الطلب)، والحجوزات.