কম্পিউটার

কিভাবে আমরা একটি MySQL সঞ্চিত পদ্ধতির মধ্যে ROLLBACK লেনদেন সম্পাদন করতে পারি?


যেমন আমরা জানি যে রোলব্যাক ৷ লেনদেন শুরু হওয়ার পর ডাটাবেসে করা কোনো পরিবর্তন ফিরিয়ে আনবে। ROLLBACK সম্পাদন করতে৷ MySQL সংরক্ষিত পদ্ধতিতে আমাদের অবশ্যই EXIT ঘোষণা করতে হবে হ্যান্ডলার আমরা sqlexception বা SQL সতর্কতার জন্য একটি হ্যান্ডলার ব্যবহার করতে পারি। এটি একটি উদাহরণের সাহায্যে বোঝা যেতে পারে যেখানে নিম্নলিখিত বিবরণ সহ টেবিলের জন্য ROLLBACK তৈরি করা সংরক্ষিত পদ্ধতি -

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)

আমরা দেখতে পাচ্ছি যে কলাম 'নাম'-এ 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 মান সন্নিবেশ করার চেষ্টা করা হচ্ছে)৷


  1. আমরা কিভাবে একটি MySQL সঞ্চিত পদ্ধতি পরিবর্তন করতে পারি?

  2. মাইএসকিউএল সংরক্ষিত পদ্ধতির মধ্যে আমরা কীভাবে কমিট লেনদেন করতে পারি?

  3. আমরা কিভাবে MySQL সংরক্ষিত পদ্ধতির মধ্যে START লেনদেন সম্পাদন করতে পারি?

  4. কিভাবে একটি MySQL সঞ্চিত পদ্ধতি এটির ভিতরে অন্য MySQL সঞ্চিত পদ্ধতিকে কল করতে পারে?