जवाबों:
यह चर नियंत्रित करता है कि क्या बाइनरी लॉगिंग को संग्रहीत फ़ंक्शन बनाने के लिए संग्रहीत फ़ंक्शन पर भरोसा करना चाहिए जो असुरक्षित घटनाओं का कारण होगा। उदाहरण के लिए। UUID फ़ंक्शन करना
यह प्रलेखन में अच्छी तरह से समझाया गया है:
जब आप एक संग्रहीत कार्य बनाते हैं, तो आपको यह घोषित करना होगा कि यह नियतात्मक है या यह डेटा को संशोधित नहीं करता है। अन्यथा, यह डेटा रिकवरी या प्रतिकृति के लिए असुरक्षित हो सकता है।
डिफ़ॉल्ट रूप से, एक क्रिएट फंक्शन स्टेटमेंट को स्वीकार करने के लिए, कम से कम DETERMINISTIC, NO SQL, या READS SQL DATA को स्पष्ट रूप से निर्दिष्ट किया जाना चाहिए। अन्यथा एक त्रुटि होती है:
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)
फ़ंक्शन निर्माण पर पूर्ववर्ती स्थितियों को शिथिल करने के लिए (जिसमें आपके पास सुपर विशेषाधिकार होना चाहिए और यह कि फ़ंक्शन को नियतकालिक या डेटा संशोधित नहीं करना चाहिए), वैश्विक log_bin_trust_function_creators सिस्टम चर को 1 पर सेट करें।
संदर्भ: mysql- दस्तावेज़ीकरण (इसे पढ़ें क्योंकि यह उदाहरण के साथ समझाता है।)
आपके दूसरे प्रश्न के बारे में, यदि यह गतिशील है और सर्वर को पुनरारंभ करने पर यह बदल जाएगा:
हाँ यह एक गतिशील चर है।
चर पुनः आरंभ होने पर बदल जाएगा, यदि आप परिवर्तन को प्रतिबिंबित करने के लिए कॉन्फ़िगरेशन को अपडेट नहीं करते हैं।
संदर्भ: mysql-प्रलेखन-फिर
mysql> select if(1 is true,'TRUE','FALSE')\G *************************** 1. row *************************** if(1 is true,'TRUE','FALSE'): TRUE