2012-03-20 11 views
5

में मैं कुछ परीक्षण करने के लिए कोशिश करते हैं और मैं मुद्दा यह है कि मैं स्तंभ के लिए डिफ़ॉल्ट बाध्य नहीं कर सकते हैं।स्तंभ के लिए पूर्व निर्धारित डिफ़ॉल्ट जोड़े T-SQL

मेरा लक्ष्य स्तंभ में परिवर्तन और उस कॉलम में पूर्व निर्धारित डिफ़ॉल्ट True संलग्न करने के लिए है।

मैं क्या गलत कर रहा हूं?

CREATE default [dbo].[True] as (1) 
GO 

CREATE TABLE dbo.aaa (column_a INT, column_b char(1)) ; 
GO 

INSERT INTO dbo.aaa (column_a)VALUES (7) ; 
GO 

ALTER TABLE dbo.aaa ADD CONSTRAINT DF_col_b DEFAULT [dbo].[True] FOR column_b ; 
GO 

INSERT INTO dbo.aaa (column_a) VALUES (10) ; 
GO 

SELECT * FROM dbo.aaa ; 
GO 

DROP TABLE dbo.aaa ; 
GO 

इस उदाहरण में मैं, ALTER तालिका लाइन

संदेश 128, स्तर 15, राज्य 1 पर त्रुटि मिलती पंक्ति 1

नाम "dbo.True" नहीं है इस संदर्भ में अनुमति दी। मान्य अभिव्यक्ति स्थिरांक हैं, निरंतर अभिव्यक्तियां, और (कुछ संदर्भों में) चर। कॉलम नाम की अनुमति नहीं है।

+0

में आपका स्वागत है: यदि आप कोड एक्सएमएल या डेटा के नमूने पोस्ट, ** कृपया ** पाठ संपादक में उन पंक्तियों पर प्रकाश डाला और "कोड नमूने" बटन पर क्लिक (' {} ') संपादक टूलबार पर अच्छी तरह से प्रारूपित करने और वाक्यविन्यास इसे हाइलाइट करने के लिए! –

+1

क्या आपको कोई त्रुटि मिलती है? यदि ऐसा है: ** जहां ** (आपके नमूना कोड में कौन सी रेखा पर) - और ** वास्तव में क्या त्रुटि है ?? –

+0

मैं अगर आप यह कर त्रुटि है कि अपने कोड आपके सवाल का मेरे लिए उत्पन्न है, लेकिन इसकी बेहतर कहा, मामले मैं किसी कारण से कर रहा हूँ, एक अलग त्रुटि हो रही है। –

उत्तर

1

आप अपने स्तंभ "1" के लिए डिफ़ॉल्ट करना चाहते हैं, तो आप इस क्यों कोशिश मत करो:

ALTER TABLE dbo.aaa ADD CONSTRAINT DF_col_b DEFAULT '1' FOR column_b ; 

आपकी डिफ़ॉल्ट यह सच है कहा जाता है। यदि एकमात्र संभावनाएं सच या गलत हैं, तो आपको संभवतः प्रकार को चार (1) से बिट में बदलना चाहिए। और बदलने बयान बन जाएगा: StackOverflow को

ALTER TABLE dbo.aaa ADD CONSTRAINT DF_col_b DEFAULT 1 FOR column_b ; 
0

बाध्यकारी पूर्व परिभाषित डिफ़ॉल्ट के लिए कोई वाक्यविन्यास नहीं है। आप stored procedure उपयोग करने की आवश्यकता:

sp_bindefault 'True', 'dbo.aaa.column_b' 
+0

वह एसपी बहिष्कृत है ... –

+0

@SirCrispalot तो डिफ़ॉल्ट बना है। –

+0

हाँ सही मैंने दस्तावेज में देखा कि इसे हटा दिया जाएगा। लेकिन विकल्प क्या है? यदि मैं उपयोगकर्ता परिभाषित प्रकार बना देता हूं और वहां एक डिफ़ॉल्ट मान रखना चाहता हूं, तो यह डिफ़ॉल्ट बनाने का भी उपयोग करता है? –

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