تڕانزاکشن چییە؟

تڕانزاکشن (Transaction) بریتییە لە زنجیرەیەک کردەی SQL کە وەک یەک یەکەی تەواو مامەڵەیان لەگەڵ دەکرێت. لە داتابەیسدا، تڕانزاکشن یارمەتیمان دەدات دڵنیابین کە هەموو گۆڕانکارییەکان بە سەرکەوتوویی ئەنجام دەدرێن، یان ئەگەر یەکێک لەوانە شکستی هێنا، هەموو گۆڕانکارییەکان بگەڕێنینەوە باری پێشوو.

تڕانزاکشنەکان بنەمای سەرەکی ACID (Atomicity, Consistency, Isolation, Durability) پێکدەهێنن، کە دڵنیایی دەدات داتابەیسەکەت هەمیشە لە دۆخێکی سەقامگیردایە.

دەستپێکردنی تڕانزاکشن

بۆ دەستپێکردنی تڕانزاکشن، فەرمانی START TRANSACTION بەکاردەهێنین. لەم ساتەوە، هەر گۆڕانکارییەک ئەنجامی بدەیت (وەک INSERT یان UPDATE)، لە داتابەیسەکەدا بە شێوەیەکی کاتی دەمێنێتەوە و هێشتا بە فەرمی تۆمار نەکراوە.

START TRANSACTION;
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
UPDATE accounts SET balance = balance + 100 WHERE id = 2;

لە نموونەکەدا، ئێمە پارە لە هەژمارێک بۆ هەژمارێکی تر دەگوازینەوە. ئەگەر فەرمانەکان بە سەرکەوتوویی جێبەجێ کران، دەبێت ئەنجامەکە پەسەند بکەین.

فەرمانی COMMIT

کاتێک دڵنیابوویت کە هەموو گۆڕانکارییەکان دروستن، فەرمانی COMMIT بەکاردەهێنیت. ئەم فەرمانە گۆڕانکارییەکان بە هەمیشەیی لە داتابەیسدا تۆمار دەکات.

COMMIT;

دوای جێبەجێکردنی COMMIT، گۆڕانکارییەکان بۆ هەموو بەکارهێنەرانی تر دەردەکەوێت و چیتر ناتوانرێت هەڵبوەشێنرێتەوە. هەڵەی باو ئەوەیە کە بیرت بچێت COMMIT بکەیت، کە ئەمەش دەبێتە هۆی ئەوەی گۆڕانکارییەکان لە داتابەیسەکەدا تۆمار نەبن.

فەرمانی ROLLBACK

ئەگەر لە کاتی ئەنجامدانی گۆڕانکارییەکاندا هەڵەیەک ڕوویدا، یان ویستت گۆڕانکارییەکان ڕەت بکەیتەوە، فەرمانی ROLLBACK بەکاردەهێنیت. ئەم فەرمانە داتابەیسەکە دەگەڕێنێتەوە بۆ دۆخی پێش دەستپێکردنی تڕانزاکشنەکە.

START TRANSACTION;
DELETE FROM orders WHERE id = 50;
-- ئەگەر زانیمان ئەمە هەڵەیە، ئەوا:
ROLLBACK;
ئاگاداری: ROLLBACK تەنها کار دەکات ئەگەر هێشتا COMMIT-ت نەکردبێت. کاتێک COMMIT ئەنجامدرا، ئیتر ناتوانیت ROLLBACK بکەیت.

بۆچی تڕانزاکشن گرنگە؟

  • پاراستنی یەکپارچەیی: ڕێگری دەکات لەوەی بەشێک لە گۆڕانکارییەکان تۆمار بکرێن و بەشەکەی تریان نا.
  • پاراستنی داتا لە کاتی پچڕانی کارەبا یان هەڵەی سیستەم.
  • ڕێگەدان بە تاقیکردنەوەی گۆڕانکارییەکان پێش ئەوەی بە فەرمی تۆمار بکرێن.

ڕاهێنانی پراکتیکی

هەوڵ بدە تڕانزاکشنێک دروست بکەیت کە تێیدا ناوی بەکارهێنەرێک لە خشتەی users دەگۆڕیت، پاشان بەهۆی فەرمانی ROLLBACK گۆڕانکارییەکە هەڵبوەشێنەرەوە و دڵنیابەرەوە کە ناوەکە نەگۆڕاوە.

ئەمانە ئەم فێرکارییەیان تەواوکردووە

1 فێرخواز تەواویان کردووە