SQL सर्वर में किसी मौजूदा तालिका में डिफ़ॉल्ट मान वाले कॉलम जोड़ें




sql-server sql-server-2005 (20)

वाक्य - विन्यास:

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

उदाहरण:

ALTER TABLE SomeTable
        ADD SomeCol Bit NULL --Or NOT NULL.
 CONSTRAINT D_SomeTable_SomeCol --When Omitted a Default-Constraint Name is autogenerated.
    DEFAULT (0)--Optional Default-Constraint.
WITH VALUES --Add if Column is Nullable and you want the Default Value for Existing Records.

टिप्पणियाँ:

वैकल्पिक बाधा नाम:
यदि आप CONSTRAINT D_SomeTable_SomeCol छोड़ देते हैं तो SQL सर्वर CONSTRAINT D_SomeTable_SomeCol हो जाएगा
एक अजीब नाम के साथ एक डिफ़ॉल्ट-Contraint जैसे: DF__SomeTa__SomeC__4FB7FEF6

वैकल्पिक मूल्य-मूल्य विवरण:
WITH VALUES की आवश्यकता होती है जब आपका कॉलम शून्य हो जाता है
और आप मौजूदा रिकॉर्ड्स के लिए उपयोग किए गए डिफ़ॉल्ट मान चाहते हैं।
यदि आपका कॉलम पूर्ण NOT NULL , तो यह स्वचालित रूप से डिफ़ॉल्ट मान का उपयोग करेगा
सभी मौजूदा रिकॉर्ड्स के लिए, चाहे आप WITH VALUES निर्दिष्ट करते हैं या नहीं।

कैसे डिस्प्ले डिफ़ॉल्ट-बाधा के साथ काम करते हैं:
यदि आप किसी रिकॉर्ड में रिकॉर्ड SomeTable और कुछ SomeCol मान निर्दिष्ट नहीं करते हैं , तो यह 0 से डिफ़ॉल्ट होगा।
यदि आप एक रिकॉर्ड SomeCol और कुछ SomeCol के मान को SomeCol के रूप में निर्दिष्ट SomeCol (और आपका कॉलम नल की अनुमति देता है)
तो डिफ़ॉल्ट-बाधा का उपयोग नहीं किया जाएगा और NULL मान के रूप में डाला जाएगा।

नोट्स नीचे हर किसी की महान प्रतिक्रिया पर आधारित थे।
उन्हें विशेष धन्यवाद:
@Yatrix, @WalterStabosz, @YahooSerious, और @StackMan उनकी टिप्पणियों के लिए।

https://code.i-harness.com

SQL सर्वर 2000 / SQL Server 2005 में किसी मौजूदा तालिका में डिफ़ॉल्ट मान वाले कॉलम को कैसे जोड़ा जा सकता है?


आप टी-एसक्यूएल के साथ निम्नलिखित तरीके से काम कर सकते हैं।

 ALTER TABLE {TABLENAME}
 ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
 CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}

साथ ही आप डिज़ाइन मेनू में दायां क्लिक करके SQL सर्वर प्रबंधन स्टूडियो का भी उपयोग कर सकते हैं, तालिका में डिफ़ॉल्ट मान सेट कर सकते हैं।

और इसके अलावा, यदि आप डेटाबेस में सभी तालिकाओं में एक ही कॉलम (यदि यह मौजूद नहीं है) जोड़ना चाहते हैं, तो इसका उपयोग करें:

 USE AdventureWorks;
 EXEC sp_msforeachtable
'PRINT ''ALTER TABLE ? ADD Date_Created DATETIME DEFAULT GETDATE();''' ;

इसे इस्तेमाल करे

ALTER TABLE Product
ADD ProductID INT NOT NULL DEFAULT(1)
GO

उदाहरण:

ALTER TABLE [Employees] ADD Seniority int not null default 0 GO

उपयोग:

-- Add a column with a default DateTime  
-- to capture when each record is added.

ALTER TABLE myTableName  
ADD RecordAddedDate smalldatetime NULL DEFAULT(GetDate())  
GO 


एसक्यूएल सर्वर + ऑल्टर टेबल + कॉलम + डिफॉल्ट वैल्यू अनन्य पहचानकर्ता जोड़ें

ALTER TABLE Product 
ADD ReferenceID uniqueidentifier not null 
default (cast(cast(0 as binary) as uniqueidentifier))

एसक्यूएल सर्वर + परिवर्तन तालिका + कॉलम + डिफ़ॉल्ट मूल्य अद्वितीय पहचानकर्ता जोड़ें ...

ALTER TABLE [TABLENAME] ADD MyNewColumn INT not null default 0 GO

केवल दो पंक्तियों के साथ सबसे बुनियादी संस्करण

ALTER TABLE MyTable
ADD MyNewColumn INT NOT NULL DEFAULT 0

खैर, अब मेरे पिछले जवाब में कुछ संशोधन है। मैंने देखा है कि उत्तर में से कोई भी जवाब IF NOT EXISTS । इसलिए मैं इसका एक नया समाधान प्रदान करने जा रहा हूं क्योंकि मुझे तालिका में बदलाव करने में कुछ समस्याएं आ रही हैं।

IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.columns WHERE table_name = 'TaskSheet' AND column_name = 'IsBilledToClient')
BEGIN
ALTER TABLE dbo.TaskSheet ADD
 IsBilledToClient bit NOT NULL DEFAULT ((1))
END
GO

यहां TaskSheet विशेष तालिका का नाम है और IsBilledToClient एक नया कॉलम है जिसे आप डालने जा रहे हैं और 1 डिफ़ॉल्ट मान। इसका मतलब है कि नए कॉलम में मौजूदा पंक्तियों का मूल्य क्या होगा, इसलिए कोई स्वचालित रूप से वहां सेट हो जाएगा। हालांकि, आप कॉलम प्रकार के संबंध में अपनी इच्छा के अनुसार बदल सकते हैं जैसे मैंने BIT उपयोग किया है, इसलिए मैंने डिफ़ॉल्ट मान 1 में डाल दिया है।

मैं उपरोक्त प्रणाली का सुझाव देता हूं, क्योंकि मुझे एक समस्या का सामना करना पड़ा है। तो समस्या क्या है? समस्या यह है कि यदि तालिका तालिका में IsBilledToClient कॉलम मौजूद है तो यदि आप नीचे दिए गए कोड के केवल भाग को निष्पादित करते हैं तो आपको SQL सर्वर क्वेरी बिल्डर में कोई त्रुटि दिखाई देगी। लेकिन अगर यह अस्तित्व में नहीं है तो पहली बार निष्पादन के दौरान कोई त्रुटि नहीं होगी।

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

तालिका में एक नया कॉलम जोड़ें:

ALTER TABLE [table]
ADD Column1 Datatype

उदाहरण के लिए,

ALTER TABLE [test]
ADD ID Int

यदि उपयोगकर्ता इसे स्वचालित रूप से बढ़ाना चाहता है तो:

ALTER TABLE [test]
ADD ID Int IDENTITY(1,1) NOT NULL

यदि आप कई कॉलम जोड़ना चाहते हैं तो आप इसे उदाहरण के लिए कर सकते हैं:

ALTER TABLE YourTable
    ADD Column1 INT NOT NULL DEFAULT 0,
        Column2 INT NOT NULL DEFAULT 1,
        Column3 VARCHAR(50) DEFAULT 'Hello'
GO

यह एसएसएमएस जीयूआई में भी किया जा सकता है। मैं नीचे एक डिफ़ॉल्ट तिथि दिखाता हूं लेकिन डिफ़ॉल्ट मूल्य निश्चित रूप से हो सकता है।

  1. अपनी तालिका को डिज़ाइन व्यू में रखें (ऑब्जेक्ट एक्सप्लोरर-> डिज़ाइन में तालिका पर राइट क्लिक करें)
  2. तालिका में एक कॉलम जोड़ें (या उस कॉलम पर क्लिक करें जिसे आप अपडेट करना चाहते हैं यदि यह पहले से मौजूद है)
  3. नीचे कॉलम गुणों में, नीचे दिए गए अनुसार (getdate()) या abc या 0 या डिफ़ॉल्ट मान या बाध्यकारी फ़ील्ड में जो भी मान आप चाहते हैं दर्ज करें :


यह नीचे दिए गए कोड द्वारा किया जा सकता है।

CREATE TABLE TestTable
    (FirstCol INT NOT NULL)
    GO
    ------------------------------
    -- Option 1
    ------------------------------
    -- Adding New Column
    ALTER TABLE TestTable
    ADD SecondCol INT
    GO
    -- Updating it with Default
    UPDATE TestTable
    SET SecondCol = 0
    GO
    -- Alter
    ALTER TABLE TestTable
    ALTER COLUMN SecondCol INT NOT NULL
    GO

सावधान रहें जब आप जो कॉलम जोड़ रहे हैं वह पूरी तरह से बाधा NOT NULL , फिर भी एक निश्चित बाधा (मान) नहीं है। अगर तालिका में कोई पंक्ति है तो ALTER TABLE विवरण उस स्थिति में विफल हो जाएगा। समाधान या तो नए कॉलम से NOT NULL नलिका को हटा देना है, या इसके लिए एक निश्चित बाधा प्रदान करना है।


पहले नाम छात्र के साथ एक टेबल बनाएँ:

CREATE TABLE STUDENT (STUDENT_ID INT NOT NULL)

इसमें एक कॉलम जोड़ें:

ALTER TABLE STUDENT 
ADD STUDENT_NAME INT NOT NULL DEFAULT(0)

SELECT * 
FROM STUDENT

तालिका बनाई गई है और एक डिफ़ॉल्ट तालिका के साथ एक मौजूदा तालिका में एक कॉलम जोड़ा गया है।


ALTER TABLE <table name> 
ADD <new column name> <data type> NOT NULL
GO
ALTER TABLE <table name> 
ADD CONSTRAINT <constraint name> DEFAULT <default value> FOR <new column name>
GO


ALTER TABLE Protocols
ADD ProtocolTypeID int NOT NULL DEFAULT(1)
GO

DEFAULT को शामिल करने से मौजूदा पंक्तियों में कॉलम को डिफ़ॉल्ट मान के साथ भर दिया जाता है, इसलिए नल की बाधा का उल्लंघन नहीं किया जाता है।


ALTER TABLE tbl_table ADD int_column int NOT NULL DEFAULT(0)

इस क्वेरी से आप डिफ़ॉल्ट मान 0 के साथ डेटाटाइप पूर्णांक का एक कॉलम जोड़ सकते हैं।





sql-server-2000