شرح صفوف ومحتوى الفقرة
تبدأ كل جلسة اتصال جديدة بخادم MySQL 8 مع تفعيل متغير الجلسة @@autocommit على القيمة الافتراضية 1. في هذا الوضع، يعامل الخادم كل جملة INSERT أو UPDATE أو DELETE منفردة كمعاملة مستقلة ويحفظها على القرص فوراً بمجرد انتهائها دون خطأ.
عندما تحتاج إلى ربط جملتين أو أكثر في معاملة ذرية على مستوى الجلسة، يمكنك إيقاف الحفظ التلقائي مؤقتاً بالأمر SET autocommit = 0;، ثم تنفيذ التعديلات واعتمادها معاً بالأمر COMMIT;، ثم إعادة تفعيل الوضع الافتراضي:
SELECT @@autocommit: يفحص حالة الحفظ التلقائي في الجلسة الحالية (1مفعّل،0معطّل).SET autocommit = 0;: يمنع الحفظ الفوري ويبقي التعديلات اللاحقة معلّقة داخل معاملة الجلسة.COMMIT;: يعتمد خصم المبلغ وإضافته معاً كعملية ذرية واحدة على القرص.SET autocommit = 1;: يعيد الجلسة إلى السلوك الافتراضي بعد انتهاء العملية المجمّعة.
+--------------------+
| current_autocommit |
+--------------------+
| 1 |
+--------------------+
SQL
SELECT @@autocommit AS current_autocommit;
SET autocommit = 0;
UPDATE wallet_ledgers SET balance = balance - 150.00 WHERE account_id = 101;
UPDATE wallet_ledgers SET balance = balance + 150.00 WHERE account_id = 102;
COMMIT;
SET autocommit = 1;