উত্তর:
এই পরিবর্তনশীলটি নিয়ন্ত্রণ করে যে বাইনারি লগিংটি অনিরাপদ ইভেন্টগুলির কারণ হিসাবে সঞ্চিত ফাংশন তৈরি না করার জন্য সঞ্চিত ফাংশন স্রষ্টাদের বিশ্বাস করে কিনা। যেমন। ইউআইডি ফাংশন রয়েছে।
ডকুমেন্টেশনে এটি ভালভাবে ব্যাখ্যা করা হয়েছে:
আপনি যখন কোনও সঞ্চিত ফাংশন তৈরি করেন, আপনাকে অবশ্যই তা ঘোষণা করতে হবে যে এটি নির্বিচারক বা এটি ডেটা পরিবর্তন করে না ify অন্যথায়, এটি তথ্য পুনরুদ্ধার বা প্রতিরূপের জন্য অনিরাপদ হতে পারে।
ডিফল্টরূপে, একটি ক্রিয়েট ফাংশন স্বীকৃতি স্বীকার করার জন্য, কমপক্ষে একটি ডিটর্মিনিস্টিক, ন এসকিউএল, বা এসএকিউএল ডেটা স্পষ্টভাবে নির্দিষ্ট করতে হবে। অন্যথায় একটি ত্রুটি ঘটে:
ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)
ফাংশন তৈরির পূর্ববর্তী শর্তগুলি শিথিল করার জন্য (যে আপনার কাছে অবশ্যই সুপারের অধিকার থাকতে হবে এবং কোনও ফাংশনটি অবশ্যই ডিটারমিনিস্টিক হিসাবে ঘোষণা করতে হবে বা ডেটা পরিবর্তন করতে হবে না), গ্লোবাল লগ_বিন_স্রাস্ট_ফানশন_ক্রিটর সিস্টেম ভেরিয়েবল 1 এ সেট করুন।
তথ্যসূত্র: মাইএসকিএল-ডকুমেন্টেশন (এটি উদাহরণ হিসাবে ব্যাখ্যা হিসাবে এটি পড়ুন।)
আপনার দ্বিতীয় প্রশ্ন সম্পর্কে, যদি এটি গতিশীল হয় এবং আপনি সার্ভারটি পুনরায় চালু করলে এটি পরিবর্তন হবে:
হ্যাঁ এটি একটি গতিশীল পরিবর্তনশীল।
পরিবর্তনটি প্রতিফলিত করার জন্য কনফিগারেশন আপডেট না করা হলে পুনরায় চালু হওয়ার পরে পরিবর্তনশীলটি পরিবর্তিত হবে।
তথ্যসূত্র: মাইএসকিএল-ডকুমেন্টেশন-আবার
mysql> select if(1 is true,'TRUE','FALSE')\G *************************** 1. row *************************** if(1 is true,'TRUE','FALSE'): TRUE