2012-05-08 16 views
5

मैं संख्याओं की संख्या को सीमित करने की कोशिश कर रहा हूं जिसमें एक पूर्णांक फ़ील्ड हो सकता है। उदाहरण के लिए, मैं चाहता हूं कि फ़ील्ड में 5 से अधिक लंबा नंबर न हो, इसलिए 99 99 9 उच्चतम मान्य प्रविष्टि होगी।सीमित पूर्णांक डेटा प्रकार फ़ील्ड लंबाई

क्या यह MySQL में करना संभव है? मैंने प्रलेखन को देखा है लेकिन मेरा जवाब नहीं मिला है।

उत्तर

3

दुर्भाग्यवश न तो CHECK बाधा और न ही उपयोगकर्ता परिभाषित प्रकार MySQL में लागू किए गए हैं। शायद यह भविष्य के संस्करणों में बदल जाएगा।

तब तक आपको लगता है कि अगर आप के लिए जाने के लिए एक रास्ता है इनपुट सही करने के लिए एक ट्रिगर का उपयोग कर सकते हैं:

delimiter // 
CREATE TRIGGER trigger_check BEFORE INSERT ON your_table 
FOR EACH ROW 
BEGIN 
    IF NEW.NUM > 99999 THEN 
     SET NEW.NUM = 0; 
    END IF; 
END 
// 
+1

पूर्णता के लिए के लिए, आप भी पूर्णांकों का एक मेज के लिए एक विदेशी कुंजी का उपयोग कर सकता है कि 99 999 पर समाप्त होता है। –

0

डीबी स्तर पर ऐसा करना संभव नहीं है। आपको या तो संग्रहीत प्रक्रियाओं का उपयोग करना होगा, या उस एप्लिकेशन को अपने एप्लिकेशन में रखना होगा।

http://dev.mysql.com/doc/refman/5.5/en/integer-types.html

एक मध्यम पूर्णांक निकटतम आप प्राप्त कर सकते है।

इसके अलावा, आप की संभावना कुछ बिंदु पर कुछ इस तरह दिखाई देंगे:

CREATE TABLE blah (col INT (5)); 

यह है कि तुम क्या हालांकि लगता है कि नहीं करता है। यह वास्तव में क्षेत्र की लंबाई को 5 स्थानों तक सीमित नहीं करता है। यह इंगित करता है कि कॉलम पर ज़ीरोफिल सेट होने पर इसे 5 स्थानों पर गद्देदार होना चाहिए।

1

जब भी डेटाबेस में कोई परिवर्तन किया जाता है, तो आप इसे लागू करने के लिए एक ट्रिगर जोड़ सकते हैं। ट्रिगर निष्पादित करने से पहले निष्पादित होगा कि यह सत्यापित करने के लिए कि यह "वैध" प्रविष्टि के साथ अद्यतन हो रहा है। अगर प्रविष्टि अमान्य है, तो अपडेट को खारिज कर दिया जा सकता है।

संबंधित मुद्दे