6

क्या एसक्यूएल सर्वर में समेकित प्रकार की कार्यक्षमता की अनुमति देने के लिए कुछ प्रकार की तंत्र है?एसक्यूएल सर्वर 2008 में अनुमानित प्रकार?

उदाहरण के लिए, अगर मैं एक स्तंभ कहा जाता है "UpdateStatus" है यह आम तौर पर सेटअप एक पत्र मूल्यों के साथ इसलिए की तरह हो जाता है:

  1. डी
  2. एक्स
  3. यू
  4. मैं

यह कई चीजों के समान हो सकता है। इससे भ्रम पैदा होता है। वैकल्पिक इसे इस तरह एक स्ट्रिंग स्तंभ होना है:

  1. डाउनलोड किए
  2. हटाए गए
  3. अपडेट किया गया
  4. प्रारंभ

लेकिन वह अपनी ही समस्या है। आखिर में कोई ऐसा कुछ लिखने जा रहा है: where UpdateStatus = 'Initalized' (वर्तनी गलत)। इसके अलावा मैंने सुना है कि स्ट्रिंग्स की कुंजी बंद करना सभी कलाकार नहीं है।

तो, क्या SQL सर्वर के लिए कोई भी प्रकार का गणित प्रकार है जो इससे मदद कर सकता है? असल में मैं संकलन समय की जांच कर रहा हूं कि एक मूल्य की तुलना की जा रही है (यानी "प्रारंभिक") मूल्यों की सूची का हिस्सा है।

मैं एसक्यूएल सर्वर का उपयोग कर रहा 2008

+0

नहीं है, अन्य है कि प्रस्तावित समाधान (लुकअप तालिका एफके बाधा के साथ) SQL सर्वर में कुछ भी नहीं है जो "enum" प्रकार की तरह काम करता है। –

+0

@marc_s: यह बहुत बुरा है। मैं उम्मीद कर रहा था कि कुछ सीएलआर ऑब्जेक्ट्स जादू का इस्तेमाल एक गणित प्रकार बनाने के लिए किया जा सकता है। – Vaccano

उत्तर

10

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

+1

@ फिलिप फॉरी: मैं ऐसा कर सकता हूं, (और पहले से ही डीबी में उस तरह की चीजें हैं) लेकिन क्या "मैं ढूंढ रहा हूं [है] ** संकलन समय ** यह जांच रहा है कि एक मूल्य की तुलना की जा रही है (यानी" प्रारंभिक ") मूल्यों की एक सूची का हिस्सा है। " क्या यह समाधान संकलन समय की जांच करता है? – Vaccano

+2

@Vaccano: नहीं, लेकिन यह डेटा संशोधन विसंगतियों के खिलाफ सुरक्षा प्रदान करता है। हालांकि, यदि आप आवेदन शुरू करते हैं तो यह महत्वपूर्ण और क्रॉस-चेक है, तो आप बस एक मिलान गणना दर्ज करें। और +1। – gbn

+0

@Vaccano, क्षमा करें * संकलन समय का एहसास नहीं हुआ * जब मैंने जवाब दिया तो जांच करना महत्वपूर्ण था। क्षमा करें, मुझे यहां उल्लिखित से बेहतर तरीके से पता नहीं है। –

1

एकमात्र तरीका जिसे मैंने देखा है, यह मूल्यांकन करने के लिए एक यूडीएफ का उपयोग करके है कि एनम की स्ट्रिंग प्रस्तुति मान्य है या नहीं। यह धीमा है, यह दर्दनाक है, और आमतौर पर इसके लायक नहीं है, लेकिन कम से कम आपके पास चुपचाप बजाए जोर से विफल होने का एक तरीका है।

और याद रखें, आप एक यूडीएफ में रेज़रर नहीं कर सकते हैं, इसलिए आपको एक त्रुटि का कारण बनना होगा, और अलग से लॉग इन करना होगा।

अंत में, इस समय, समस्या का 'सही' समाधान दूसरी तरफ से संपर्क करना होगा - आप इस मानसिकता को कोड-प्रथम ओआरएम के साथ प्राप्त कर सकते हैं, जो आपको अपने मूल निवासी का उपयोग करने की अनुमति देगा कोड, और संबंधित एसक्यूएल लुकअप माइग्रेशन में ठीक से बनाया जाएगा।

यहाँ, उम्मीद है हम जल्द ही enums पाने के लिए है we're feeling a little left out.

6

देखने तालिकाओं (FKS) इसके अलावा, सरल मामलों में, आप का उपयोग की कमी की जांच कर सकते हैं:

CREATE TABLE my_table ( 
    UpdateStatus VARCHAR2(11) 
     CHECK(UpdateStatus IN ('Downloaded', 'Deleted', 'Updated', 'Initialized')) 
) 
संबंधित मुद्दे