ROLLBACK ট্রানজ্যাকশন শুরু হওয়ার পর ডেটাবেসে করা পরিবর্তন ফিরিয়ে আনে। MySQL স্টোরড প্রোসিডিউরে ROLLBACK করতে EXIT হ্যান্ডলার ডিক্লেয়ার করতে হয়। SQLEXCEPTION বা SQL warnings এর জন্য হ্যান্ডলার ব্যবহার করা যায়। উদাহরণ:
mysql> SHOW CREATE table gg\G *************************** 1. row *************************** Table: gg Create Table: CREATE TABLE `gg` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `Name` varchar(30) NOT NULL, PRIMARY KEY (`Id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1 1 row in set (0.00 sec)
'name' কলাম NULL হতে পারবে না এবং টেবিলের ডেটা:
mysql> Select * from employee.tbl; +----+---------+ | Id | Name | +----+---------+ | 1 | Mohan | | 2 | Gaurav | | 3 | Sohan | | 4 | Saurabh | | 5 | Yash | | 6 | Rahul | +----+---------+ 6 rows in set (0.00 sec)
উদাহরণ
mysql> Delimiter //
mysql> Create Procedure st_transaction_Rollback()
-> BEGIN
-> DECLARE exit handler for sqlexception
-> BEGIN
-> ROLLBACK;
-> END;
-> DECLARE exit handler for sqlwarning
-> BEGIN
-> ROLLBACK;
-> END;
-> START TRANSACTION;
-> INSERT INTO employee.tbl(name) values();
-> UPDATE employee.tbl set name = 'YashPal' where id = 5;
-> COMMIT;
-> END //
Query OK, 0 rows affected (0.02 sec)
mysql> Delimiter ;
mysql> CALL st_transaction_Rollback ()
Query OK, 0 rows affected (0.00 sec)
mysql> Select * from employee.tbl;
+----+---------+
| Id | Name |
+----+---------+
| 1 | Mohan |
| 2 | Gaurav |
| 3 | Sohan |
| 4 | Saurabh |
| 5 | Yash |
| 6 | Rahul |
+----+---------+
6 rows in set (0.00 sec)
ফলাফলে দেখা যাচ্ছে INSERT কোয়ারী এরর ফেলার (NULL ইনসার্ট করার চেষ্টা) কারণে UPDATE স্টেটমেন্টের পরিবর্তন ROLLBACK হয়েছে।