একটি লেনদেনের মধ্যে একটি নির্বাচন বিবৃতি স্থাপন


10

এই 2 টি প্রশ্নের মধ্যে পার্থক্য কি:

START TRANSACTION;
SELECT * FROM orders WHERE id=1;
UPDATE orders SET username='John' WHERE id=1;
COMMIT;

এবং লেনদেন ছাড়াই:

SELECT * FROM orders WHERE id=1;
UPDATE orders SET username='John' WHERE id=1;  

SELECTকোনও লেনদেনের অভ্যন্তরে কী প্রভাব পড়ে ?

যদি উভয় ক্ষেত্রেই DELETE FROM orders WHERE id=1ঠিক পরে অন্য অধিবেশন থেকে আহ্বান করা হয় SELECT, কখন এটি প্রক্রিয়াজাত করা হবে?

উত্তর:


5

কোনও লেনদেনের ভিতরে একটি নির্বাচন জিজ্ঞাসা, নিজে থেকেই, আপডেটগুলি এবং মুছে ফেলা থেকে সঠিকভাবে রক্ষা করা হয় না।

আপনাকে নিম্নলিখিতটি কী ব্যবহার করতে হবে:

আপনি যদি ইস্যু করেন Delete From orders Where id=1, তা ordersসারণীতে থাকা সারিগুলি লেনদেনের শেষে তাদের লকগুলি প্রকাশ করার পরে ঘটবে । আপনি READ UNCOMMITTEDমুছে ফেলতে লজিকালটি ঘটানোর জন্য লেনদেনের বিচ্ছিন্নতা স্তর ব্যবহার করে (কোনও দেব / স্টেজিং সার্ভারে দয়া করে) পরীক্ষা-নিরীক্ষা করতে পারেন, তবে কেবল প্রতিশ্রুতিবদ্ধভাবে এটি দৃশ্যমান হবে এবং স্থায়ীভাবে রেকর্ড হবে।

দ্বিতীয় লেনদেনে, মূলত সমস্ত বেট বন্ধ আছে। আপনি যদি চালান

select * From orders Where id=1;
UPDATE orders SET username="John" Where id=1;

চলমান Delete From orders Where id=1সঙ্গে সঙ্গে প্রতিশ্রুতিবদ্ধ হবে। যে আদেশটি মাইএসকিউএল এই বিবৃতিগুলি কার্যকর করে তার উপর নির্ভর করে আপনি মুছে ফেলা সারিগুলি দেখবেন (বা দেখবেন না)।

বিচারকার্য স্থগিত রাখার আদেশ

মাইএসকিউএল 5.6 এ এখন নিম্নলিখিতগুলি রয়েছে :

  • START TRANSACTION READ WRITE;
  • START TRANSACTION READ ONLY;

রিড লিখন এবং কেবলমাত্র সংশোধনকারী পড়ুন লেনদেন অ্যাক্সেস মোড সেট করে। তারা লেনদেনে ব্যবহৃত টেবিলগুলিতে পরিবর্তনের অনুমতি দেয় বা নিষেধ করে। কেবলমাত্র রিডের সীমাবদ্ধতা লেনদেনকে অন্য লেনদেনের জন্য দৃশ্যমান উভয় ট্রানজেকশনাল এবং অযৌক্তিক টেবিলগুলিকে সংশোধন বা লক করা থেকে বাধা দেয়; লেনদেন এখনও অস্থায়ী টেবিলগুলি সংশোধন করতে বা লক করতে পারে। এই সংশোধকগুলি মাইএসকিউএল 5.6.5 হিসাবে উপলব্ধ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.