ট্রানজেকশন কন্ট্রোল হল SQL-এর একটি গুরুত্বপূর্ণ ধারণা, যা ডেটাবেসে একাধিক অপারেশনকে একটি একক ইউনিট হিসেবে পরিচালনা করতে সাহায্য করে। ট্রানজেকশন নিশ্চিত করে যে ডেটাবেসে করা পরিবর্তনগুলো অ্যাটমিক (atomic), নিরাপদ এবং স্বতন্ত্র থাকবে।
COMMIT এবং ROLLBACK হল ট্রানজেকশন কন্ট্রোলের দুটি মূল উপাদান, যা ডেটাবেসে পরিবর্তন সংরক্ষণ (commit) অথবা বাতিল (rollback) করতে ব্যবহৃত হয়।
COMMIT কমান্ডটি ব্যবহার করা হয় যখন আপনি একটি ট্রানজেকশনের মধ্যে করা সব অপারেশন সফলভাবে শেষ করেছেন এবং সেই পরিবর্তনগুলো ডেটাবেসে স্থায়ী করতে চান।
-- ট্রানজেকশন শুরু
START TRANSACTION;
-- ডেটা ইনসার্ট করা
INSERT INTO employee (id, name, age) VALUES (1, 'John Doe', 30);
-- ট্রানজেকশন কমিট করা
COMMIT;
এই কোডে:
ROLLBACK কমান্ডটি ব্যবহার করা হয় যখন আপনি ট্রানজেকশনের মধ্যে করা অপারেশন বাতিল করতে চান, অর্থাৎ, পরিবর্তনগুলো ডেটাবেসে ফিরিয়ে নেওয়া (undo) হবে।
-- ট্রানজেকশন শুরু
START TRANSACTION;
-- ডেটা ইনসার্ট করা
INSERT INTO employee (id, name, age) VALUES (2, 'Jane Smith', 25);
-- ত্রুটি ঘটলে ট্রানজেকশন রোলব্যাক করা
ROLLBACK;
এই কোডে:
কমান্ড | কার্যকলাপ |
---|---|
COMMIT | সমস্ত পরিবর্তন স্থায়ীভাবে ডেটাবেসে সংরক্ষণ করে। |
ROLLBACK | সমস্ত পরিবর্তন বাতিল করে এবং ডেটাবেসকে পূর্বাবস্থায় ফিরিয়ে নিয়ে যায়। |
JDBC ব্যবহার করে ডেটাবেসে COMMIT এবং ROLLBACK কিভাবে করা হয় তা নিচে একটি উদাহরণ দিয়ে দেখানো হলো:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.SQLException;
public class TransactionExample {
public static void main(String[] args) {
String url = "jdbc:derby:myDB;create=true"; // ডেটাবেসের URL
try (Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement()) {
// ট্রানজেকশন শুরু
conn.setAutoCommit(false); // Auto-commit বন্ধ
// ডেটা ইনসার্ট করা
stmt.executeUpdate("INSERT INTO employee (id, name, age) VALUES (3, 'David White', 40)");
// যদি কোনো সমস্যা না হয়, তাহলে COMMIT করা
conn.commit(); // ট্রানজেকশন কমিট করা
System.out.println("Data inserted and committed successfully.");
} catch (SQLException e) {
// কোনো সমস্যা হলে ROLLBACK করা
try {
conn.rollback(); // ট্রানজেকশন রোলব্যাক করা
System.out.println("Transaction rolled back due to error.");
} catch (SQLException ex) {
ex.printStackTrace();
}
}
}
}
এই কোডে:
common.read_more