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 उनकी टिप्पणियों के लिए।
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 {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
संदर्भ: वैकल्पिक तालिका (ट्रांजैक्ट-एसक्यूएल) (एमएसडीएन)
एसक्यूएल सर्वर + ऑल्टर टेबल + कॉलम + डिफॉल्ट वैल्यू अनन्य पहचानकर्ता जोड़ें
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
यह एसएसएमएस जीयूआई में भी किया जा सकता है। मैं नीचे एक डिफ़ॉल्ट तिथि दिखाता हूं लेकिन डिफ़ॉल्ट मूल्य निश्चित रूप से हो सकता है।
- अपनी तालिका को डिज़ाइन व्यू में रखें (ऑब्जेक्ट एक्सप्लोरर-> डिज़ाइन में तालिका पर राइट क्लिक करें)
- तालिका में एक कॉलम जोड़ें (या उस कॉलम पर क्लिक करें जिसे आप अपडेट करना चाहते हैं यदि यह पहले से मौजूद है)
- नीचे कॉलम गुणों में, नीचे दिए गए अनुसार
(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
नलिका को हटा देना है, या इसके लिए एक निश्चित बाधा प्रदान करना है।
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 ADD ColumnName {Column_Type} Constraint
एमएसडीएन लेख अल्टर टेबल (ट्रांजैक्ट-एसक्यूएल) में सभी बदलाव वाक्य वाक्यविन्यास है।
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 के साथ डेटाटाइप पूर्णांक का एक कॉलम जोड़ सकते हैं।