আপনার প্রশ্নের উত্তর নির্ভর করে যে আপনি কোনও লেনদেনের মধ্যে রয়েছেন কি না - তার উপর নির্ভর করে যা একাধিক বিবৃতিতে বিস্তৃত হবে। (আপনি প্রশ্নটি InnoDB এর সাথে ট্যাগ করেছেন, মাইআইএসএএম এর সাথে উত্তরটি আলাদা হবে))
রেফারেন্স ম্যানুয়াল থেকে: http://dev.mysql.com/doc/refman/5.1/en/commit.html
ডিফল্টরূপে, মাইএসকিউএল অটোকোমিট মোড সক্ষম করে নিয়ে চলে। এর অর্থ হল যে আপনি কোনও টেবিল আপডেট করে (সংশোধন করে) কোনও বিবৃতি কার্যকর করার সাথে সাথে মাইএসকিউএল আপডেটটিকে স্থায়ী করতে ডিস্কে সংরক্ষণ করে।
সুতরাং হ্যাঁ, ডিফল্টরূপে, আপনি যদি কেবলমাত্র ব্যবহার করছেন INSERT
, আপনার সন্নিবেশ করা রেকর্ডগুলি প্রতিশ্রুতিবদ্ধ হবে এবং সেগুলি আবার ঘোরানোর চেষ্টা করার কোনও মানে নেই। (এই কার্যকরভাবে মধ্যে প্রতিটি বিবৃতি মোড়কে হিসাবে একই BEGIN
এবং COMMIT
।)
তবে, আপনি যদি লেনদেনের সাথে সুস্পষ্টভাবে ডিল করছেন, আপনাকে COMMIT
রেকর্ডগুলি সঞ্চয় করতে ব্যবহার করতে হবে, তবে আপনি ব্যবহার করতেও সক্ষম হবেন ROLLBACK
।
আপনি START TRANSACTION
(বা BEGIN
) ব্যবহার করে সুস্পষ্টভাবে একটি লেনদেন শুরু করতে পারেন । এটি autocommit
সেটিংটি থেকে পৃথক (ডিফল্ট অনুসারে):
শুরু ট্রানজেকশন সহ, আপনি স্বীকৃতি বা রোলব্যাকের মাধ্যমে লেনদেন শেষ না করা পর্যন্ত অটোকমমিট অক্ষম থাকবে। স্বতঃসংশোধন মোডটি তারপরে তার আগের অবস্থায় ফিরে আসে।
বিকল্পভাবে, যদি autocommit=0
, আমি মনে করি লেনদেনের অন্য শেষের পরে কোনও বিবৃতি লেনদেন শুরু করবে (তবে আপনি এখনও START TRANSACTION
স্পষ্টভাবে ব্যবহার করতে পারেন ); এটি আমি অন্তত এভাবে ব্যাখ্যা করি :
স্বতঃসংশোধন মোড। যদি 1 তে সেট করা থাকে তবে একটি টেবিলের সমস্ত পরিবর্তনগুলি তত্ক্ষণাত কার্যকর হবে। যদি 0 তে সেট করা থাকে তবে আপনাকে অবশ্যই কোনও লেনদেন গ্রহণ করতে COMMIT বা এটি বাতিল করতে রোলব্যাক ব্যবহার করতে হবে। যদি স্বতঃপরিচালনা 0 হয় এবং আপনি এটি 1 এ পরিবর্তন করেন, মাইএসকিউএল যে কোনও মুক্ত লেনদেনের একটি স্বয়ংক্রিয় COMMIT সম্পাদন করে। লেনদেন শুরু করার আর একটি উপায় হল START Transferences বা BEGIN বিবৃতি ব্যবহার করা। বিভাগ 12.3.1, "ট্রানজেকশন শুরু করুন, কমিট করুন, এবং রোলব্যাক সিনট্যাক্স" দেখুন।
আরও সুনির্দিষ্টভাবে "একটি লেনদেন শুরু করার অন্য উপায়" থেকে বোঝা যাচ্ছে যে একটি লেনদেন শুরু করার জন্য "অটোকোমিট = 0" নির্ধারণ করা যথেষ্ট (কমপক্ষে প্রতিটি অধিবেশন শুরুর আগে একটি অধিবেশন শুরুর আগে বা এটি অনুসরণ করে COMMIT
/ ROLLBACK
)। আমি যাহাই হউক না কেন স্পষ্টভাবে ব্যবহার BEGIN
বা পরামর্শ দেওয়ার পরামর্শ দেব , কেননা এটি লেনদেন কখন শুরু হয় বা শেষ হয় তা আরও পরিষ্কার করে তুলতে পারে।START TRANSACTION
autocommit=0
(আপনি কীভাবে কোনও লেনদেন শুরু করেন আপনার অ্যাপ্লিকেশনটি যেভাবে MySQL ব্যবহার করে তার উপর নির্ভর করে on)