MySQL-এ নেস্টেড ট্রানজ্যাকশন বাস্তবায়ন করতে SAVEPOINT ব্যবহার করা হয়।
ধাপসমূহ
- টেবিল তৈরি করুন
- ট্রানজ্যাকশন শুরু করুন (
START TRANSACTION) - রেকর্ড ইনসার্ট করুন
SAVEPOINTদিয়ে একটি সেভপয়েন্ট তৈরি করুন- আরো রেকর্ড ইনসার্ট করুন
- প্রয়োজনে
ROLLBACK TO SAVEPOINTদিয়ে সেভপয়েন্টে ফিরে যান
উদাহরণ
mysql> CREATE TABLE NestedTransactionDemo (
-> Name VARCHAR(200)
-> );
Query OK, 0 rows affected (0.63 sec)
mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO NestedTransactionDemo VALUES('John');
Query OK, 1 row affected (0.04 sec)
mysql> SELECT * FROM NestedTransactionDemo;
+------+
| Name |
+------+
| John |
+------+
1 row in set (0.00 sec)
-- নেস্টেড ট্রানজ্যাকশন শুরু
mysql> SAVEPOINT transaction2;
Query OK, 0 rows affected (0.00 sec)
mysql> INSERT INTO NestedTransactionDemo VALUES('David');
Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM NestedTransactionDemo;
+-------+
| Name |
+-------+
| John |
| David |
+-------+
2 rows in set (0.00 sec)
-- সেভপয়েন্টে রোলব্যাক
mysql> ROLLBACK TO transaction2;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM NestedTransactionDemo;
+------+
| Name |
+------+
| John |
+------+
1 row in set (0.00 sec)
mysql> ROLLBACK TO transaction2;
Query OK, 0 rows affected (0.00 sec)
SAVEPOINT একটি নামযুক্ত ট্রানজ্যাকশন সেভপয়েন্ট তৈরি করে। ROLLBACK TO SAVEPOINT সেটি নির্দিষ্ট সেভপয়েন্টে ডেটাবেস ফিরিয়ে আনে, কিন্তু পুরো ট্রানজ্যাকশন রোলব্যাক করে না। এটি নেস্টেড ট্রানজ্যাকশনের মতো কাজ করে।