BEGIN TRANSACTION, COMMIT, এবং ROLLBACK হল T-SQL এ ট্রানজেকশন ম্যানেজমেন্টের জন্য ব্যবহৃত কমান্ড। এগুলি ডেটাবেসে ডেটার সঠিকতা এবং অখণ্ডতা নিশ্চিত করতে সাহায্য করে। যখন আমরা একটি একাধিক স্টেটমেন্ট পরিচালনা করি, তখন ট্রানজেকশন ব্যবহার করে আমরা নিশ্চিত করতে পারি যে সমস্ত স্টেটমেন্ট সফলভাবে কার্যকর হয়েছে এবং ডেটাবেসের অবস্থা সঠিক আছে। যদি কিছু ভুল হয়, তাহলে ROLLBACK ব্যবহার করে আমরা সমস্ত পরিবর্তন পূর্বাবস্থায় ফিরিয়ে আনতে পারি।
BEGIN TRANSACTION
BEGIN TRANSACTION স্টেটমেন্টটি একটি ট্রানজেকশন শুরু করতে ব্যবহৃত হয়। এটি একটি কোড ব্লক নির্দেশ করে, যেখানে একাধিক SQL স্টেটমেন্ট একসাথে কার্যকর হবে। ট্রানজেকশন শুরু হলে, সমস্ত অপারেশন একত্রে সম্পন্ন হবে, অথবা কোনও ত্রুটি ঘটলে সমস্ত অপারেশন বাতিল হবে (ROLLBACK)।
Syntax:
BEGIN TRANSACTION;
COMMIT
COMMIT স্টেটমেন্টটি কার্যকর ট্রানজেকশনের সমস্ত পরিবর্তন নিশ্চিত করে এবং ডেটাবেসে স্থায়ী করে। একবার COMMIT করা হলে, ডেটাবেসে সমস্ত পরিবর্তন সঞ্চিত হয়ে যাবে এবং তা পুনরুদ্ধার করা সম্ভব হবে না।
Syntax:
COMMIT;
COMMIT এর মাধ্যমে আপনি নিশ্চিত করেন যে ট্রানজেকশনের সমস্ত স্টেটমেন্ট সফলভাবে সম্পন্ন হয়েছে এবং তাদের পরিবর্তন ডেটাবেসে সঞ্চিত হয়েছে।
ROLLBACK
ROLLBACK স্টেটমেন্টটি একটি ট্রানজেকশন বাতিল করে এবং তার সমস্ত পরিবর্তন পূর্বাবস্থায় ফিরিয়ে আনে। যদি কোনও ত্রুটি ঘটে এবং আপনি চান যে ট্রানজেকশনের সমস্ত পরিবর্তন ফিরিয়ে আনা হোক, তাহলে ROLLBACK ব্যবহার করবেন।
Syntax:
ROLLBACK;
ROLLBACK সাধারণত ত্রুটি হ্যান্ডলিং এর সময় ব্যবহার করা হয়, যেখানে আপনি ট্রানজেকশনের পরিবর্তনগুলো বাতিল করে ডেটাবেসকে পূর্বাবস্থায় ফিরিয়ে আনতে চান।
BEGIN TRANSACTION, COMMIT, এবং ROLLBACK এর উদাহরণ
ধরা যাক, আমরা একটি Bank টেবিলের মধ্যে Transfer ট্রানজেকশন করতে যাচ্ছি যেখানে একজন গ্রাহকের অ্যাকাউন্ট থেকে টাকা অন্য অ্যাকাউন্টে ট্রান্সফার করা হবে। যদি কোনো কারণে সমস্যা হয়, তবে আমরা ট্রানজেকশন বাতিল করতে পারব।
BEGIN TRANSACTION;
BEGIN TRY
-- গ্রাহক একাউন্ট থেকে টাকা কমানো
UPDATE BankAccounts
SET Balance = Balance - 1000
WHERE AccountID = 1;
-- গ্রাহক একাউন্টে টাকা যোগ করা
UPDATE BankAccounts
SET Balance = Balance + 1000
WHERE AccountID = 2;
-- যদি সবকিছু ঠিক থাকে, তবে COMMIT করা হবে
COMMIT;
END TRY
BEGIN CATCH
-- কোনো ত্রুটি ঘটলে রোলব্যাক করা হবে
ROLLBACK;
PRINT 'Transaction failed: ' + ERROR_MESSAGE();
END CATCH;
ব্যাখ্যা:
- BEGIN TRANSACTION: ট্রানজেকশন শুরু করা হয়েছে।
- UPDATE স্টেটমেন্ট: প্রথমে গ্রাহক একাউন্ট থেকে টাকা কমানো হচ্ছে এবং পরে অন্য একাউন্টে টাকা যোগ করা হচ্ছে।
- COMMIT: যদি সবকিছু সঠিকভাবে হয়, তবে COMMIT দ্বারা পরিবর্তন সঞ্চিত করা হবে।
- ROLLBACK: যদি কোনো ত্রুটি ঘটে, তবে ROLLBACK দ্বারা সমস্ত পরিবর্তন বাতিল করা হবে এবং ডেটাবেস পূর্বাবস্থায় ফিরে যাবে।
Transaction Isolation
ট্রানজেকশন ব্যবহারের সময় Transaction Isolation স্তরও বিবেচ্য হতে পারে। এতে ট্রানজেকশনগুলির মধ্যে পারস্পরিক হস্তক্ষেপ নিয়ন্ত্রণ করা হয়, যেমন:
- READ UNCOMMITTED: একে অপরের পরিবর্তন পড়ে নেয়ার অনুমতি দেয়।
- READ COMMITTED: শুধুমাত্র কমিট হওয়া ডেটা পড়া যাবে।
- REPEATABLE READ: একই ট্রানজেকশনের মধ্যে একই ডেটা পরিবর্তিত হতে না দেওয়ার নিশ্চয়তা দেয়।
- SERIALIZABLE: পুরো টেবিল বা ডেটার সিলেকশন ব্লক করে।
সারাংশ
- BEGIN TRANSACTION: ট্রানজেকশন শুরু করে।
- COMMIT: ট্রানজেকশনের সমস্ত পরিবর্তন নিশ্চিত করে ডেটাবেসে স্থায়ী করে।
- ROLLBACK: ট্রানজেকশনের সমস্ত পরিবর্তন বাতিল করে এবং ডেটাবেস পূর্বাবস্থায় ফিরিয়ে আনে।
- TRY...CATCH: ত্রুটি হ্যান্ডলিংয়ের জন্য BEGIN TRY...END TRY এবং BEGIN CATCH...END CATCH ব্যবহার করা হয়, যাতে ত্রুটি ঘটলে ROLLBACK করা যায়।
Transaction Management অত্যন্ত গুরুত্বপূর্ণ যখন একাধিক SQL স্টেটমেন্ট একসাথে সম্পাদন করতে হয় এবং ডেটাবেসে নির্ভুলতা ও সামঞ্জস্য বজায় রাখতে হয়।
Read more