2012-02-17 17 views
8

मैं एसक्यूएल सर्वर में निम्न कथन है:एसक्यूएल सर्वर: के साथ जोड़ें बदल नया स्तंभ

ALTER TABLE [dbo].[TruckTbl] 
ADD [TruckState] [bit] NULL DEFAULT 0; 

क्या यह कर देगा मौजूदा रिकॉर्ड के लिए 0.

के लिए किसी भी नए रिकॉर्ड डिफ़ॉल्ट करने के लिए कैसे कर सकते हैं मैं है बयान में प्राप्त करें और कहें कि 0

मुझे पता है कि मैं जा सकता हूं और अपडेट कर सकता हूं लेकिन फिर भी ALTER कथन में अपडेट के भीतर क्या करना है?

+0

अपने बीआईटी क्षेत्र * वास्तव में * नल होना चाहिए? यह मूल रूप से इसे एक बिस्टेट की बजाय एक ट्रिस्टेट बनाता है। अगर उस क्षेत्र ने नल की अनुमति नहीं दी है, तो पिछले सभी रिकॉर्ड आपके निर्धारित डिफ़ॉल्ट मान प्राप्त करेंगे! – Jamiec

उत्तर

18

हालांकि मैं अन्य जवाब के साथ सहमत हैं WITH VALUES खंड

ALTER TABLE [dbo].[TruckTbl] ADD [TruckState] [bit] NULL DEFAULT 0 WITH VALUES; 

का प्रयोग करें यह अजीब लगता है कि स्तंभ नल बिल्कुल 0 करने के लिए यदि आप सभी मौजूदा पंक्तियों सेट कर रहे हैं हो सकता है और भविष्य आवेषण के लिए एक डिफ़ॉल्ट होना चाहिए । क्या आपको कभी भी कॉलम मान के रूप में NULL को अनुमति देने की आवश्यकता है?

+2

कूल, कभी नहीं पता था कि * अस्तित्व में था। – Jamiec

0
ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE} 
[WITH VALUES] 

उदा

ALTER TABLE Temp 
ADD ID int NOT NULL DEFAULT(1) 
+0

टिप्पणियां जोड़ें आपने इसे क्यों कम किया। –

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