شرح صفوف ومحتوى الفقرة
بدلاً من تعطيل متغير الجلسة SET autocommit = 0 يدوياً وتذكر إعادته، تعتمد التطبيقات القياسية في بيئات الإنتاج على بدء المعاملة صراحةً بالأمر START TRANSACTION; (أو مرادفه BEGIN;). يقوم هذا الأمر بتعليق الحفظ التلقائي مؤقتاً طوال فترة المعاملة الحالية فقط، ثم يعيد الجلسة تلقائياً إلى حالتها الأصلية فور انتهاء المعاملة:
START TRANSACTION;: الصيغة القياسية لفتح سياق معاملة جديدة داخل محركInnoDB.BEGIN;: مرادف مختصر في الجلسات المباشرة، لكن يُفضَّل دائماً استخدامSTART TRANSACTION;لأن كلمةBEGINتُستخدم داخل الإجراءات المخزنة لبدء الكتل البرمجية.UPDATE wallet_ledgers ...: تُنفَّذ أوامر الخصم والإيداع داخل مخزن المعاملة المؤقت مع الاحتفاظ بالقيم السابقة في سجل التراجع.COMMIT;: ينهي المعاملة الصريحة ويعتمد التعديلات نهائياً على القرص ويعيد تفعيل الحفظ التلقائي للجلسة.
+------------+--------+---------+
| account_id | holder | balance |
+------------+--------+---------+
| 101 | Mona | 700.00 |
| 102 | Tariq | 600.00 |
+------------+--------+---------+
SQL
START TRANSACTION;
UPDATE wallet_ledgers SET balance = balance - 200.00 WHERE account_id = 101;
UPDATE wallet_ledgers SET balance = balance + 200.00 WHERE account_id = 102;
SELECT account_id, holder, balance FROM wallet_ledgers;
COMMIT;