2011-04-27 8 views
8

MySQL मैनुअल के अनुसार "CHECK खंड पार्स किया गया है लेकिन सभी स्टोरेज इंजनों द्वारा अनदेखा किया गया है।" तो मुझे पता है कि सरल समाधान प्रश्न से बाहर है लेकिन क्या एक ही परिणाम में आने का एक और व्यवहार्य माध्यम है? शायद ट्रिगर या संग्रहीत प्रक्रियाओं के कुछ उपयोग के माध्यम से? यदि हां, तो कैसे?MySQL चेक बाधा वैकल्पिक

चूंकि यह सिर्फ "पार्स" है, क्योंकि यह कहने से अच्छा है कि इसका उपयोग करने से बचें क्योंकि यह किसी उद्देश्य की सेवा नहीं करता है?

MySQL 5.5.11 और InnoDB तालिकाओं का उपयोग करना

उत्तर

5

इस दिलचस्प लेख

https://wikis.oracle.com/display/mysql/Triggers#Triggers-EmulatingCheckConstraints

मैं अक्सर कि विधि का उपयोग पर एक नजर डालें।

+0

उस लिंक के लिए महान धन्यवाद जाँच की कमी के लिए Enum उपयोग कर सकते हैं। इसे कार्यान्वित करने के तरीके पर अच्छी जानकारी देता है। मुझे इसके साथ थोड़ा सा खेलना होगा और देखें कि सीमाएं मेरे ऐप में समस्याएं बढ़ाती हैं या नहीं। क्या आप वास्तव में इन ट्रिगर्स के लिए समर्पित डीबी का उपयोग करते हैं? – swisscheese

+0

हाय। मुझे समझ में नहीं आता कि समर्पित डीबी के साथ आपका क्या मतलब है। मैं उन सभी डीबीएस में हर बार ट्रिगर्स का उपयोग करता हूं जिनकी आवश्यकता होती है। –

+0

उस ट्यूटोरियल से लिया गया "ऐसा करने के लिए हमें दो चीजें बनाने की आवश्यकता है, एक टेबल के खिलाफ त्रुटि उत्पन्न करने और उस तालिका में डालने की प्रक्रिया जो बदले में एक त्रुटि उठाएगी। इन्हें बनाने के लिए एक अच्छा विचार होगा अलग डेटाबेस ताकि उन्हें किसी भी डेटाबेस द्वारा एक्सेस किया जा सके। " – swisscheese

2

मैं संस्करण 5.5.21 उपयोग कर रहा हूँ आप http://dev.mysql.com/doc/refman/5.0/en/enum.html

+0

'फ़्लोट' कॉलम पर बहुत उपयोगी नहीं है, या जहां स्वीकृत मान 0-100000 की तरह हैं ... – ceejayoz