অটোমেটিক কমিট অফ করা

MySQLi Transactions - মাইএসকিউএল আই (MySQLi) - Database Tutorials

283

MySQLi তে অটোমেটিক কমিট (Auto-commit) ডিফল্টভাবে চালু থাকে, অর্থাৎ প্রতিটি SQL ক্যোয়ারি সম্পাদিত হওয়ার সাথে সাথে তা ডেটাবেসে স্বয়ংক্রিয়ভাবে সংরক্ষিত হয়ে যায়। তবে, যদি আপনি ট্রানজেকশন পরিচালনা করতে চান, যেখানে একাধিক SQL ক্যোয়ারি একসাথে কার্যকরী হয় এবং সবগুলো সফল হলে একসাথে কমিট (commit) করা হয়, তাহলে আপনাকে অটোমেটিক কমিট বন্ধ (turn off) করতে হবে।

অটোমেটিক কমিট বন্ধ করে, আপনি ট্রানজেকশন পরিচালনা করতে পারবেন, যা ডেটাবেসে একাধিক ক্যোয়ারি একসাথে প্রক্রিয়া করে, এবং যদি কোন সমস্যা হয়, তাহলে পুরো ট্রানজেকশনটি রোলব্যাক (rollback) করা যাবে।


MySQLi তে অটোমেটিক কমিট বন্ধ করার পদ্ধতি

MySQLi তে অটোমেটিক কমিট বন্ধ করার জন্য autocommit() মেথড ব্যবহার করা হয়। যখন আপনি autocommit(false) সেট করবেন, তখন ডেটাবেসের মধ্যে কোনো ক্যোয়ারি ট্রানজেকশন হিসেবে কাজ করবে, এবং আপনি নিজে commit() বা rollback() মেথডের মাধ্যমে সিদ্ধান্ত নিতে পারবেন।


অটোমেটিক কমিট বন্ধ করা (Auto-commit off)

<?php
// ডেটাবেসে সংযোগ স্থাপন করা
$mysqli = new mysqli("localhost", "username", "password", "database_name");

// সংযোগ সফল না হলে ত্রুটি দেখানো
if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

// অটোমেটিক কমিট বন্ধ করা
$mysqli->autocommit(FALSE);

// প্রথম ক্যোয়ারি চালানো (যেমন: ইনসার্ট)
$sql1 = "INSERT INTO users (name, email) VALUES ('John Doe', 'john.doe@example.com')";
if (!$mysqli->query($sql1)) {
    // প্রথম ক্যোয়ারি ব্যর্থ হলে রোলব্যাক
    $mysqli->rollback();
    echo "Error: " . $mysqli->error;
    exit;
}

// দ্বিতীয় ক্যোয়ারি চালানো (যেমন: আপডেট)
$sql2 = "UPDATE users SET email='john.newemail@example.com' WHERE name='John Doe'";
if (!$mysqli->query($sql2)) {
    // দ্বিতীয় ক্যোয়ারি ব্যর্থ হলে রোলব্যাক
    $mysqli->rollback();
    echo "Error: " . $mysqli->error;
    exit;
}

// সবকিছু সঠিক হলে কমিট
$mysqli->commit();
echo "Transaction successful.";

// সংযোগ বন্ধ করা
$mysqli->close();
?>

এখানে:

  1. $mysqli->autocommit(FALSE) ব্যবহার করে অটোমেটিক কমিট বন্ধ করা হয়েছে।
  2. দুটি SQL ক্যোয়ারি একে একে চালানো হয়েছে: প্রথমে ইনসার্ট, তারপর আপডেট।
  3. যদি কোন একটি ক্যোয়ারি ব্যর্থ হয়, তবে rollback() মেথড ব্যবহার করে পুরো ট্রানজেকশনটি বাতিল (rollback) করা হবে।
  4. সমস্ত ক্যোয়ারি সফল হলে commit() মেথড ব্যবহার করে ট্রানজেকশনটি কমিট (commit) করা হবে, অর্থাৎ ডেটাবেসে স্থায়ীভাবে পরিবর্তন সংরক্ষণ করা হবে।

অটোমেটিক কমিট পুনরায় চালু করা (Auto-commit on)

ট্রানজেকশন ব্যবহারের পর, অটোমেটিক কমিট আবার চালু করতে হলে autocommit(true) মেথড ব্যবহার করতে হবে:

<?php
// অটোমেটিক কমিট পুনরায় চালু করা
$mysqli->autocommit(TRUE);
?>

এটি নিশ্চিত করবে যে পরবর্তী SQL ক্যোয়ারি গুলো আবার স্বয়ংক্রিয়ভাবে কমিট হয়ে যাবে।


সারাংশ

MySQLi তে অটোমেটিক কমিট (Auto-commit) ডিফল্টভাবে চালু থাকে, কিন্তু ট্রানজেকশন পরিচালনা করতে চাইলে আপনি এটি বন্ধ (off) করতে পারেন। এর মাধ্যমে একাধিক SQL ক্যোয়ারি একসাথে কার্যকরী হবে এবং যদি কোন ক্যোয়ারি ব্যর্থ হয়, তাহলে পুরো ট্রানজেকশন রোলব্যাক করা যাবে। autocommit(FALSE) ব্যবহার করে অটোমেটিক কমিট বন্ধ করা হয় এবং commit()rollback() মেথডের মাধ্যমে ট্রানজেকশন পরিচালনা করা হয়।

Content added By
Promotion

Are you sure to start over?

Loading...