MySQL-এ সত্যিকারের নেস্টেড ট্রানজ্যাকশন নেই, কিন্তু SAVEPOINT দিয়ে আংশিক রোলব্যাক করা যায়।
উদাহরণ
mysql> CREATE TABLE TransactionDemo (id INT AUTO_INCREMENT PRIMARY KEY); mysql> START TRANSACTION; mysql> INSERT INTO TransactionDemo VALUES(); -- id=1 mysql> SAVEPOINT t2; mysql> INSERT INTO TransactionDemo VALUES(); -- id=2 mysql> SELECT * FROM TransactionDemo; -- ২টি রো
SAVEPOINT-এ রোলব্যাক
mysql> ROLLBACK TO t2; Query OK, 0 rows affected (0.03 sec) mysql> SELECT * FROM TransactionDemo; -- ১টি রো (id=1) +----+ | id | +----+ | 1 | +----+
ব্যাখ্যা
START TRANSACTION: ট্রানজ্যাকশন শুরু।SAVEPOINT name: একটি চেকপয়েন্ট তৈরি।ROLLBACK TO name: ঐ চেকপয়েন্ট পর্যন্ত ফেরত যাওয়া (পরের ইনসার্টগুলো রোলব্যাক)।RELEASE SAVEPOINT name: সেভপয়েন্ট ডিলিট।COMMIT: পুরো ট্রানজ্যাকশন কমিট।
এটি নেস্টেড ট্রানজ্যাকশনের মতো আচরণ করে, কিন্তু বাইরের ট্রানজ্যাকশন রোলব্যাক করলে সবকিছু রোলব্যাক হয়।