شرح صفوف ومحتوى الفقرة
من أخطر الأخطاء الهندسية في بيئات الإنتاج إدراج أوامر تعريف البيانات (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;