कॉलम डेटा प्रकार की अनुमत रेंज से बाहर के MySQL संख्यात्मक मान को संभालना SQL मोड पर निम्नलिखित तरीकों से निर्भर करता है:
(A) सक्षम SQL स्ट्रिक्ट मोड - जब स्ट्रिक्ट SQL मोड सक्षम होता है, तो आउट-ऑफ-रेंज मान डालने पर MySQL त्रुटि लौटाता है। इस मामले में, कुछ या सभी मानों का इन्सर्ट विफल हो जाता है।
उदाहरण के लिए, हमने दो कॉलम वाली एक टेबल बनाई जिसमें कॉलम पर TINYINT और UNSIGNED TINYINT डेटा प्रकार हैं।
mysql> Create table counting(Range1 Tinyint, Range2 Tinyint Unsigned); Query OK, 0 rows affected (0.14 sec)
अब निम्नलिखित कमांड की मदद से हमने स्ट्रिक्ट SQL मोड सक्षम किया:
mysql> Set SQL_MODE ='traditional'; Query OK, 0 rows affected (0.00 sec)
अब, यदि हम कॉलम में आउट-ऑफ-रेंज मान डालने का प्रयास करेंगे, तो MySQL त्रुटि दर्शाता है और दोनों इन्सर्ट विफल हो जाते हैं जिसे नीचे दी गई क्वेरी से जांचा जा सकता है:
mysql> Insert into Counting(Range1, Range2) Values(256,256); ERROR 1264 (22003): Out of range value for column 'Range1' at row 1 mysql> Select * from counting; Empty set (0.00 sec)
(B) अक्षम SQL स्ट्रिक्ट मोड - जब प्रतिबंधात्मक SQL मोड अक्षम होता है, तो मान को MySQL द्वारा उस कॉलम डेटा प्रकार के उपयुक्त अंतिम बिंदु तक काट दिया जाता है और परिणामी मान संचित हो जाता है। MySQL उन चेतावनियों को दर्शाता है जो कॉलम-असाइनमेंट रूपांतरण के परिणामस्वरूप होती हैं जो काटने के कारण होती हैं।
उदाहरण के लिए, यदि हम SQL स्ट्रिक्ट मोड को अक्षम करने के बाद कॉलम में मान डालेंगे, तो MySQL चेतावनियों को दर्शाएगा और मानों को उपयुक्त अंतिम बिंदु तक काटकर स्टोर करेगा। इसे नीचे दी गई क्वेरी से समझा जा सकता है:
mysql> Set SQL_MODE = ''; Query OK, 0 rows affected (0.00 sec) mysql> Insert Into Counting(Range1,Range2) values (256,256); Query OK, 1 row affected, 2 warnings (0.02 sec) mysql> Show Warnings; +---------+------+-------------------------------------------------+ | Level | Code | Message | +---------+------+-------------------------------------------------+ | Warning | 1264 | Out of range value for column 'Range1' at row 1 | | Warning | 1264 | Out of range value for column 'Range2' at row 1 | +---------+------+-------------------------------------------------+ 2 rows in set (0.00 sec) mysql> Select * from Counting; +--------+--------+ | Range1 | Range2 | +--------+--------+ | 127 | 255 | +--------+--------+ 1 row in set (0.00 sec)