কম্পিউটার

আমরা যখন MySQL সঞ্চিত পদ্ধতিতে COMMIT ব্যবহার করি এবং START লেনদেনের অধীনে লেনদেনের একটি ব্যর্থ হয় তখন কী হবে?


ধরুন কোয়েরিগুলির একটি ব্যর্থ হয় বা ত্রুটি তৈরি করে এবং অন্য একটি কোয়েরি (গুলি) সঠিকভাবে চালানো হয় 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)

এখন, যখন আমরা এই পদ্ধতিটি চালু করি, আমরা জানি যে আপডেট ক্যোয়ারী একটি ত্রুটি তৈরি করবে কারণ আমাদের টেবিলে id =10 নেই। কিন্তু যেহেতু প্রথম ক্যোয়ারী সফলভাবে কার্যকর হবে তাই 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. কিভাবে সংরক্ষিত পদ্ধতিতে IF ব্যবহার করবেন এবং MySQL এ নির্বাচন করবেন?

  3. মাইএসকিউএল সংরক্ষিত পদ্ধতিতে "@" প্রতীকের ব্যবহার কী?

  4. কিভাবে সঠিকভাবে একটি MySQL সঞ্চিত পদ্ধতিতে ডিলিমিটার ব্যবহার করবেন এবং মান সন্নিবেশ করবেন?