MySQL এ COMMIT এবং ROLLBACK হল ট্রানজেকশন ম্যানেজমেন্ট কমান্ড। এগুলি ডেটাবেসের ডেটা পরিবর্তন করার পর, সেই পরিবর্তনগুলোকে নিশ্চিত বা বাতিল করার জন্য ব্যবহৃত হয়। সাধারণত, COMMIT এবং ROLLBACK একটি ট্রানজেকশনের অংশ হিসেবে কাজ করে।
1. COMMIT
COMMIT কমান্ডটি একটি ট্রানজেকশন সম্পন্ন এবং নিশ্চিত করার জন্য ব্যবহৃত হয়। এটি ডেটাবেসের সমস্ত পরিবর্তনগুলি স্থায়ী (permanent) করে তোলে এবং আপনি যদি ট্রানজেকশন সঠিকভাবে সম্পন্ন করতে চান, তবে COMMIT কমান্ডটি ব্যবহার করতে হবে।
সyntax:
COMMIT;
উদাহরণ:
ধরা যাক, আমাদের একটি employees টেবিল আছে এবং আমরা কিছু ডেটা আপডেট করতে চাই।
START TRANSACTION; -- ট্রানজেকশন শুরু
UPDATE employees SET salary = 55000 WHERE employee_id = 1;
UPDATE employees SET salary = 48000 WHERE employee_id = 2;
-- ট্রানজেকশন শেষ এবং পরিবর্তনগুলো নিশ্চিত
COMMIT;
এখানে, প্রথমে START TRANSACTION দিয়ে ট্রানজেকশন শুরু হয়েছে, এবং তারপর দুটি UPDATE কমান্ডের মাধ্যমে ডেটাবেসে পরিবর্তন করা হয়েছে। COMMIT কমান্ডটি কল করার মাধ্যমে সমস্ত পরিবর্তন সেভ হয়ে যাবে এবং ডেটাবেসে স্থায়ী হবে।
2. ROLLBACK
ROLLBACK কমান্ডটি একটি ট্রানজেকশন বাতিল (undo) করার জন্য ব্যবহৃত হয়। এটি সেই সমস্ত পরিবর্তনগুলিকে বাতিল করে দেয় যা ট্রানজেকশনের মধ্যে হয়েছিল, এবং ডেটাবেস পূর্বের অবস্থায় ফিরে যায়। যদি কোনও ত্রুটি (error) ঘটে এবং আপনি পরিবর্তনগুলি বাতিল করতে চান, তবে ROLLBACK ব্যবহার করা হয়।
সsyntax:
ROLLBACK;
উদাহরণ:
ধরা যাক, আমরা একই employees টেবিল ব্যবহার করছি এবং একটি ত্রুটি (error) হওয়ার পরে ডেটা রোলব্যাক করতে চাই।
START TRANSACTION; -- ট্রানজেকশন শুরু
UPDATE employees SET salary = 55000 WHERE employee_id = 1;
UPDATE employees SET salary = 48000 WHERE employee_id = 2;
-- কিছু সমস্যা ঘটল, তাই পরিবর্তন বাতিল করা হল
ROLLBACK;
এখানে, START TRANSACTION দিয়ে ট্রানজেকশন শুরু হয়েছে এবং দুটি UPDATE কমান্ডের মাধ্যমে পরিবর্তন করা হয়েছে। কিন্তু যদি কোনো কারণে কিছু ভুল হয়ে যায় বা আপনি পরিবর্তনগুলি বাতিল করতে চান, তাহলে ROLLBACK কমান্ডটি কল করে সমস্ত পরিবর্তন ফিরিয়ে নেয়া হবে।
3. SAVEPOINT (Optional)
একটি ট্রানজেকশনের মধ্যে একাধিক পদক্ষেপের পর ROLLBACK বা COMMIT এর মধ্যে শুধুমাত্র একটি নির্দিষ্ট পয়েন্ট পর্যন্ত পরিবর্তনগুলো ফেরত নেয়ার জন্য SAVEPOINT ব্যবহার করা হয়। এর মাধ্যমে আপনি একটি ট্রানজেকশনকে ছোট ছোট অংশে ভাগ করতে পারেন এবং একে একে কন্ট্রোল করতে পারেন।
সyntax:
SAVEPOINT savepoint_name;
উদাহরণ:
START TRANSACTION;
-- প্রথম UPDATE
UPDATE employees SET salary = 55000 WHERE employee_id = 1;
-- SAVEPOINT তৈরি করা হল
SAVEPOINT update1;
-- দ্বিতীয় UPDATE
UPDATE employees SET salary = 48000 WHERE employee_id = 2;
-- যদি দ্বিতীয় UPDATE এর পর সমস্যা হয়, তাহলে প্রথমটি রোলব্যাক করতে হবে
ROLLBACK TO update1;
COMMIT;
এখানে, SAVEPOINT কমান্ড ব্যবহার করে আপনি update1 পয়েন্টটি সংরক্ষণ করেছেন। এর পরে, যদি দ্বিতীয় UPDATE এর পর কোনো সমস্যা হয়, তাহলে আপনি সেই নির্দিষ্ট পয়েন্টে ফিরে যেতে (rollback) পারেন এবং শুধুমাত্র পরবর্তী পরিবর্তনগুলো বাতিল করতে পারেন।
সারাংশ
- COMMIT: এটি ট্রানজেকশন শেষ এবং সমস্ত পরিবর্তন স্থায়ী (permanent) করার জন্য ব্যবহৃত হয়।
- ROLLBACK: এটি ট্রানজেকশন বাতিল করার জন্য ব্যবহৃত হয়, যা সমস্ত পরিবর্তন পূর্ববর্তী অবস্থায় ফিরিয়ে আনে।
- SAVEPOINT: এটি ট্রানজেকশনের মধ্যে একটি নির্দিষ্ট পয়েন্ট সংরক্ষণ করে এবং যদি প্রয়োজন হয়, পরে শুধুমাত্র সেই পয়েন্ট পর্যন্ত পরিবর্তন ফিরিয়ে নেওয়া যায়।
এই কমান্ডগুলো ডেটাবেসের ডেটাকে নিরাপদ রাখতে এবং ত্রুটির ক্ষেত্রে সহজেই ব্যাকআপ নেয়ার সুযোগ প্রদান করে।
Read more