لجمع تعديلين مترابطين في معاملة صريحة، نبدأ باستخدام START TRANSACTION، ثم ننفذ التعديلين، وننهي المعاملة باستخدام COMMIT عند نجاح العملية المطلوبة. إذا احتجنا إلى إلغاء العملية قبل تثبيتها، نستخدم ROLLBACK. يوضح هذا التسلسل حدود الوحدة التي نريد حفظها معًا.
وضع COMMIT بين التعديلين يقسم العمل، لأن التعديل الأول يصبح مثبتًا قبل تنفيذ الثاني. كذلك فإن تنفيذ التعديل الأول قبل بدء المعاملة، مع تفعيل الحفظ التلقائي الافتراضي، يجعله خارج المعاملة الجديدة. لذلك لا يكفي وجود كلمات المعاملات في النص؛ المهم هو ترتيبها حول أوامر التغيير المقصودة.
مثال
CREATE TABLE tasks (
id INT PRIMARY KEY,
status VARCHAR(20)
) ENGINE=InnoDB;
INSERT INTO tasks VALUES (1, 'open'), (2, 'open');
START TRANSACTION;
UPDATE tasks SET status = 'done' WHERE id = 1;
UPDATE tasks SET status = 'done' WHERE id = 2;
COMMIT;
يفترض المثال نجاح الأوامر، ويستخدم محركًا يدعم المعاملات. في التطبيق الحقيقي، يجب أيضًا معالجة الأخطاء وتحديد ما إذا كانت العملية حققت شروط النجاح قبل اتخاذ قرار التثبيت النهائي.
باختصار: ضع التعديلين بين بداية معاملة واحدة وCOMMIT واحد حتى يشتركا في حد تثبيت واحد.
هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.