2010-05-07 20 views
13

दृश्य स्टूडियो में एक वर्चर (अधिकतम) फ़ील्ड पर एक अद्वितीय बाधा कैसे बनाएं, दृष्टि से।एसक्यूएल सर्वर अद्वितीय बाधा समस्या

समस्या है जब मैं यह कोशिश:

> अनुक्रमित और चाबी का प्रबंधन जोड़ने> कॉलम

मैं केवल bigint कॉलम चुना है सकते हैं, लेकिन varchar (max) लोगों में से किसी के नहीं।

क्या मुझे शायद चेक बाधाओं का उपयोग करना होगा?

यदि हां, अभिव्यक्ति में क्या रखा जाए?

जानकारी

उत्तर

15

आप एक VARCHAR(MAX) स्तंभ पर एक अद्वितीय बाधा नहीं डाल सकते हैं (जो पाठ की 2 जीबी तक किया जा सकता है !!) के लिए thnx। आप बस बस नहीं कर सकते हैं।

अद्वितीय बाधा पृष्ठभूमि में एक अद्वितीय अनुक्रमणिका द्वारा लागू की जाती है, और SQL सर्वर में इंडेक्स प्रविष्टियों पर 900 बाइट सीमा है। आप उस कारण से VARCHAR(2000) फ़ील्ड पर एक अनन्य बाधा नहीं डाल सकते हैं।

आपको जो करने की कोशिश कर रहे हैं उसे प्राप्त करने के लिए आपको एक और तरीका खोजने की आवश्यकता होगी। आप उदा। लंबाई और उसकी टेक्स्ट पर चेकसम की तरह कुछ गणना करें और उन लंबाई और चेकसम कॉलम पर एक अनूठी बाधा डालें।

+0

यह एक ई क्षेत्र माना जाता है:

आप इस T-SQL कीवर्ड इस्तेमाल कर सकते हैं। मैं क्या कर सकता हूँ? इसे छोटा करें? – b0x0rz

+4

हां, इसे छोटा करें। 320 वर्ण अधिकतम लंबाई है http://email.about.com/od/emailbehindthescenes/f/address_length.htm –

+7

पवित्र बकवास आदमी, एक ईमेल फ़ील्ड? हाँ, इसे छोटा करें। जब कोई मुझे 2 जीबी लंबा ईमेल पता दिखाता है, तो मैं अपने शब्द –

1

भले ही यह संभव हो, यह एक बुरा विचार होगा।

1) एक और तरीका है। अपने अद्वितीय कॉलम

2) के रूप में उपयोग करने के लिए कुछ अन्य डेटा ढूंढें 2) यदि आपको पूरी तरह से वर्चर (अधिकतम) का उपयोग करना है। हो सकता है कि इसे डालने/अद्यतन पर हैश करें और हैश कॉलम जोड़ें?

+0

thnx – b0x0rz

1

ऐसा करने का एक तरीका हैश के लिए एक कॉलम जोड़ना होगा, जब भी आप कॉलम डालें या अपडेट करें और उस पर एक अनन्य अनुक्रमणिका डालें। जबकि हैश टकराव होता है, यह अत्यंत असंभव है।

http://msdn.microsoft.com/en-us/library/ms174415.aspx

+0

thnx की मदद करने के लिए – b0x0rz

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