انتقل إلى محتوى الدرس

Statements Causing Implicit Commit أوامر تفرض الحفظ الضمني

تعلّم المعاملات الذرية ACID والحفظ التلقائي في محرك InnoDB بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
1 صفوف تعليمية
MySQL
7 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

من أخطر الأخطاء الهندسية في بيئات الإنتاج إدراج أوامر تعريف البيانات (DDL) في منتصف معاملة بيانات نشطة. ففي خادم MySQL 8، تؤدي الأوامر التي تعدل هيكل الجداول إلى إطلاق حفظ ضمني فوري (Implicit Commit) يعتمد تلقائياً كل التعديلات السابقة المعلّقة في الجلسة قبل تنفيذ الأمر الهيكلي:

  • أوامر هيكلة الجداول: إن تنفيذ CREATE TABLE أو ALTER TABLE أو DROP TABLE أو RENAME TABLE أو TRUNCATE TABLE يحفظ فوراً أي تعديلات معلّقة في الجلسة دون انتظار أمر اعتماد صريح.
  • أوامر الكائنات المخزنة: تفرض أوامر CREATE VIEW وCREATE PROCEDURE وCREATE TRIGGER حفظاً ضمنياً مماثلاً.
  • الاستثناء الوحيد — الجداول المؤقتة: لا يسبب الأمران CREATE TEMPORARY TABLE وDROP TEMPORARY TABLE حفظاً ضمنياً عند وجود الكلمة المفتاحية TEMPORARY.
  • القاعدة الذهبية: افصل دائماً أوامر بناء وتعديل الجداول (Migrations) عن معاملات تحديث أرصدة وسجلات المستخدمين.
SQL
SET autocommit = 0;

UPDATE wallet_ledgers SET balance = balance + 50.00 WHERE account_id = 101;

-- DDL statements trigger an automatic implicit COMMIT before running:
CREATE TABLE transfer_audit (audit_id INT PRIMARY KEY);
SET autocommit = 1;