Transactions এবং Stored Procedures ডাটাবেস অপারেশন পরিচালনার জন্য ব্যবহৃত দুটি গুরুত্বপূর্ণ উপাদান। এগুলো একাধিক ডাটাবেস অপারেশন পরিচালনার সময় ডেটার সঠিকতা এবং সুরক্ষা নিশ্চিত করে। CodeIgniter ফ্রেমওয়ার্কে Transactions এবং Stored Procedures সহজে পরিচালনার জন্য বিভিন্ন টুল এবং মেথড সরবরাহ করা হয়েছে।
Transaction হলো একাধিক ডাটাবেস অপারেশনকে একটি একক অপারেশন হিসেবে পরিচালনার একটি পদ্ধতি। যদি সমস্ত অপারেশন সফল হয়, তবে পরিবর্তনগুলো স্থায়ী হয় (commit)। আর যদি কোনো একটি অপারেশন ব্যর্থ হয়, তবে সবকিছু পূর্বাবস্থায় ফিরে যায় (rollback)।
CodeIgniter এ Transactions পরিচালনার জন্য trans_start()
, trans_complete()
, trans_commit()
এবং trans_rollback()
মেথডগুলো ব্যবহার করা হয়।
$this->db->trans_start(); // Transaction শুরু
$this->db->insert('accounts', ['name' => 'John', 'balance' => 5000]);
$this->db->update('accounts', ['balance' => 4000], ['id' => 2]);
$this->db->trans_complete(); // Transaction শেষ
trans_complete()
স্বয়ংক্রিয়ভাবে commit করবে।$this->db->trans_begin(); // Transaction শুরু
$this->db->insert('accounts', ['name' => 'Doe', 'balance' => 3000]);
$this->db->update('accounts', ['balance' => 2000], ['id' => 3]);
if ($this->db->trans_status() === FALSE) {
$this->db->trans_rollback(); // ব্যর্থ হলে Rollback
} else {
$this->db->trans_commit(); // সফল হলে Commit
}
trans_start()
এবং trans_complete()
উদাহরণ:
$this->db->trans_start();
$this->db->insert('users', $data);
$this->db->trans_complete();
trans_begin()
উদাহরণ:
$this->db->trans_begin();
trans_commit()
উদাহরণ:
$this->db->trans_commit();
trans_rollback()
উদাহরণ:
$this->db->trans_rollback();
trans_status()
উদাহরণ:
if ($this->db->trans_status() === FALSE) {
// Rollback logic
}
Stored Procedure হলো ডাটাবেসে সংরক্ষিত এক বা একাধিক SQL কোয়েরির একটি সেট, যা নির্দিষ্ট কাজ সম্পাদনের জন্য ব্যবহার করা হয়। এটি ডাটাবেসে প্রি-কম্পাইলড থাকে এবং সরাসরি সার্ভার থেকে কার্যকর হয়, ফলে কর্মক্ষমতা বাড়ে।
CodeIgniter এ Stored Procedure ব্যবহার করতে query()
বা callable
স্টেটমেন্ট ব্যবহার করা হয়।
MySQL-এ একটি Stored Procedure তৈরি করুন:
DELIMITER //
CREATE PROCEDURE GetUserById (IN userId INT)
BEGIN
SELECT * FROM users WHERE id = userId;
END //
DELIMITER ;
Stored Procedure কল করার জন্য query()
মেথড ব্যবহার করা হয়:
$userId = 1;
$query = $this->db->query("CALL GetUserById(?)", [$userId]);
$result = $query->result();
print_r($result);
$query = $this->db->query("CALL GetUserById(?)", [$userId]);
DELIMITER //
CREATE PROCEDURE GetTotalUsers (OUT total INT)
BEGIN
SELECT COUNT(*) INTO total FROM users;
END //
DELIMITER ;
CodeIgniter থেকে কল:
$query = $this->db->query("CALL GetTotalUsers(@total)");
$result = $this->db->query("SELECT @total AS total");
print_r($result->row()->total);
CodeIgniter এ Transactions এবং Stored Procedures একত্রে ব্যবহার করে শক্তিশালী, কার্যকর, এবং সুরক্ষিত ডাটাবেস অপারেশন নিশ্চিত করা যায়। এগুলো বড় মাপের অ্যাপ্লিকেশনের জন্য অত্যন্ত কার্যকর।
Read more