কম্পিউটার টিউটোরিয়াল

MySQL স্টোরড প্রোসিডিউরে COMMIT ব্যবহার করলে এক ট্রানজ্যাকশন ফেল করলে কী হয়?


যদি একটি কোয়ারী ফেল করে আর অন্যটি সফল হয়, তবে MySQL সফল কোয়ারীর পরিবর্তন কমিট করে। উদাহরণ হিসেবে 'employee.tbl' টেবিল ব্যবহার করা হলো:

উদাহরণ

mysql> Select * from employee.tbl;
+----+---------+
| Id | Name    |
+----+---------+
| 1  | Mohan   |
| 2  | Gaurav  |
| 3  | Sohan   |
| 4  | Saurabh |
| 5  | Yash    |
+----+---------+
5 rows in set (0.00 sec)
mysql> Delimiter //
mysql> Create Procedure st_transaction_commit_save()
    -> BEGIN
    -> START TRANSACTION;
    -> INSERT INTO employee.tbl (name) values ('Rahul');
    -> UPDATE employee.tbl set name = 'Gurdas' WHERE id = 10;
    -> COMMIT;
    -> END //
Query OK, 0 rows affected (0.00 sec)

প্রোসিডিউরটি আহ্বান করলে UPDATE কোয়ারী এরর দেবে (id=10 নেই), কিন্তু প্রথম INSERT সফল হয়েছে তাই COMMIT পরিবর্তন সংরক্ষণ করবে:

mysql> Delimiter ;
mysql> Call st_transaction_commit_save()//
Query OK, 0 rows affected (0.07 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)

  1. স্টোরড প্রোসিজার ও ফাংশনের মধ্যে পার্থক্য কী?

  2. MySQL-এ স্টোরড প্রসিজার এবং SELECT-এ IF ফাংশন ব্যবহার

  3. MySQL স্টোরড প্রসিডিউরে @ চিহ্নের ব্যবহার

  4. MySQL-এ সঠিকভাবে DELIMITER ব্যবহার করে স্টোরড প্রসিডিউরে মান ইনসার্ট করা