SQL सर्वर


2,178

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

  0

खोलने के लिए इस लिंक आप मदद कर सकते हैं तो कृपया http://www.codefari.com/2015/10/add-column-with-default-value -to.html 18 dec. 152015-12-18 11:37:39

  0

और यह भी एक साथ http://www.w3schools.com/sql/sql_alter.asp 26 jul. 162016-07-26 23:10:26

2,787
ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE} 
WITH VALUES 
+274

ध्यान रखें कि यदि कॉलम शून्य है, तो मौजूदा पंक्तियों के लिए शून्य का उपयोग किया जाएगा। 31 jan. 122012-01-31 15:43:28

+2

@ रिचर्ड कोलेट नलिका कॉलम क्या है। यदि मेरा डेटा प्रकार int या varchar है, तो यह हमेशा मौजूदा पंक्तियों के लिए * शून्य * मान लेता है भले ही मैं एक डिफ़ॉल्ट मान निर्दिष्ट करता हूं। क्या इसका मतलब है कि डिफ़ॉल्ट मान केवल नए रिकॉर्ड की ओर जाता है? 03 feb. 122012-02-03 15:04:22

+11

@Thecrocodilehunter निरर्थक कॉलम का अर्थ है कि आप स्तंभ मान के लिए शून्य डाल सकते हैं। यदि यह एक शून्य कॉलम नहीं है, तो आपको उस डेटा प्रकार का कुछ मूल्य डालना होगा। इसलिए, मौजूदा रिकॉर्ड्स के लिए, नल उन्हें और नए रिकॉर्ड में डाला जाएगा, अन्यथा निर्दिष्ट किए जाने तक आपका डिफ़ॉल्ट मान डाला जाएगा। सही बात? 29 feb. 122012-02-29 16:42:14

+30

मुझे यह उत्तर डबगर की तुलना में थोड़ा बेहतर पसंद है क्योंकि यह स्पष्ट रूप से डिफ़ॉल्ट बाधा का नाम देता है। एक डिफ़ॉल्ट बाधा अभी भी dbugger के वाक्यविन्यास का उपयोग करके बनाई गई है, सिवाय इसके कि उसका नाम स्वत: जेनरेट किया गया है। ड्रॉप-क्रिएट स्क्रिप्ट लिखते समय सटीक नाम जानना आसान है। 23 mar. 122012-03-23 12:43:19

  0

यह सही नहीं है। यदि आप DEFAULT बाधा का उपयोग करके डिफ़ॉल्ट मान निर्दिष्ट करते हैं, तो इसे कम से कम SQL सर्वर 2008 18 jun. 122012-06-18 11:04:10

+13

@ वर्टिगो में मौजूदा पंक्तियों के मान के रूप में उपयोग किया जाएगा, यदि कॉलम न 'शून्य' है तो केवल तभी सच है।कृपया इसे आज़माएं: 'टेबल ब्लाह बनाएं (एक इंट नल प्राथमिक कुंजी क्लस्टर); ब्लाह मान डालें (1), (2); तालिका blah में जोड़ें बी int null constraint df_blah_b डिफ़ॉल्ट (0); ब्लाह से * चुनें; 'आप स्तंभ' बी' के लिए 2 नल मान देखेंगे। 14 jun. 132013-06-14 22:19:54

  0

कॉलम को 'DEFAULT' मान के साथ 'नॉट न्यूल' में बदलें। फिर, दूसरी क्वेरी के साथ, स्तंभ को शून्य बना दें। समस्या सुलझ गयी। पहली क्वेरी आपके डिफ़ॉल्ट मान जोड़ती है। दूसरी अनुमति भविष्य में नल की अनुमति देता है। 26 mar. 142014-03-26 20:20:11

+31

मौजूदा शून्य पंक्तियों को अद्यतन करने के लिए 'VALUES' का उपयोग करें। [एमएसडीएन] देखें (http://msdn.microsoft.com/en-us/library/ms187742.aspx): "यदि जोड़ा कॉलम शून्य मानों की अनुमति देता है और 'VALUES' के साथ निर्दिष्ट किया गया है, तो डिफ़ॉल्ट मान नए में संग्रहीत किया जाता है कॉलम, मौजूदा पंक्तियों में जोड़ा गया। " 28 jul. 142014-07-28 09:45:58

  0

ध्यान रखें, यदि आप किसी भी विचारों और संग्रहीत procs कि चयन {tablename} होना पुन: संयोजित करना होगा। *, {एक और TABLE} से .Field1 {tablename} {एक और TABLE} शामिल हों पर ... 27 oct. 152015-10-27 19:59:34

+1

आप में माथुर 4 लाइनें जो मैंने लीं [एमएसडीएन] (https://msdn.microsoft.com/en-us/library/ms190273.aspx) मुझे बताने के लिए एक लाख। धन्यवाद! 19 oct. 162016-10-19 20:30:41


30
ALTER TABLE ADD ColumnName {Column_Type} Constraint 

MSDN लेख ALTER TABLE (Transact-SQL) बदलने तालिका वाक्य रचना के सभी है।


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

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

+10

उस उत्तर की समस्या यह है कि डिफ़ॉल्ट मान केवल नए रिकॉर्ड के लिए मान्य है। मौजूदा रिकॉर्ड में अभी भी कुल मूल्य होगा। 09 nov. 112011-11-09 10:22:08

+111

आप पाएंगे कि यह मामला नहीं है। अन्यथा बाधा का उल्लंघन किया जाएगा। 09 nov. 112011-11-09 16:50:24

+28

मौजूदा पंक्तियों में कॉलम डिफ़ॉल्ट मान से भरे हुए हैं। थोड़ा अनुभवजन्य परीक्षण यह साबित होगा। 09 nov. 112011-11-09 16:57:03

+66

बस स्पष्ट करने के लिए - यदि आदेश से "नॉट नल" छोड़ा गया है, तो मौजूदा पंक्तियों के लिए मूल्य अपडेट नहीं किया जाएगा और न्यूल रहेगा। यदि कमांड में "नॉट न्यूल" शामिल है, तो मौजूदा पंक्तियों के मान को डिफ़ॉल्ट से मिलान करने के लिए अपडेट किया जाएगा। 14 aug. 122012-08-14 22:11:38

+12

एकाधिक स्तंभों ** टेबल table_1 परिवर्तन के लिए जोड़ें col_1 int शून्य डिफ़ॉल्ट (1), col_2 पूर्णांक शून्य ** 04 sep. 132013-09-04 05:25:11

+2

--To जोड़ें नहीं फिर से runnable (जैसे यदि कॉलम पहले से मौजूद) ... मौजूद नहीं IF (sys.columns से चुनें * कहां [नाम] = एन '<InsertFieldName>' और [object_id] = object_id (एन '<InsertTableName>')) शुरू \t ALTER तालिका <InsertTableName> जोड़ें <InsertFieldName> ... ईएनडी 12 mar. 152015-03-12 00:59:48

+1

एसक्यूएल ऑटो नाम देने का विरोध करने के रूप में अपनी बाधा का नामकरण यह आपकी स्कीमा को अधिक रखरखाव बनाए रखेगा। VALUES 02 mar. 162016-03-02 04:45:00

+3

के साथ CONSTRAINT constraint_name DEFAULT 0 के नीचे कुछ उदाहरण ध्यान रखें कि यदि आप इस विधि का उपयोग करते हैं, तो आपके पास अपनी तालिका से एक डिफॉल्ट संलग्न होगा, ताकि भविष्य में सम्मिलित बयान जो आपके नए कॉलम को छोड़ने में विफल होने के बजाय डिफ़ॉल्ट रूप से बनाए जाएंगे। यदि आपका लक्ष्य आगे बढ़ रहा है, तो आपको एक मान निर्दिष्ट करना होगा, और आप डिफ़ॉल्ट नहीं चाहते हैं, तो सुनिश्चित करें कि आपने कॉलम सफलतापूर्वक जोड़े जाने के बाद बनाए गए डिफ़ॉल्ट को छोड़ना सुनिश्चित करें। 29 nov. 162016-11-29 20:02:01


108
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 
+5

यदि तालिका में पहले से ही सामग्री है तो यह काम नहीं करेगा क्योंकि नया "शून्य नहीं है" कॉलम डिफ़ॉल्ट मान बाधा से पहले बनाया गया है 16 may. 162016-05-16 14:16:35

+1

मेरा +1 स्नॉपेट के लिए पहले 'गो' के बाद जाता है जो मौजूदा कॉलम में बाधा डालता है। 22 feb. 172017-02-22 00:33:02


77

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

  0

किसी भी *** एसक्यूएल नमूना *** इसके बारे में? 23 aug. 162016-08-23 11:50:28


60

उपयोग:

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

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

182

जब एक व्यर्थ स्तम्भ, WITH VALUES यह सुनिश्चित करेंगे कि विशिष्ट डिफ़ॉल्ट मान मौजूदा पंक्तियों को लागू किया जाता जोड़ने:

ALTER TABLE table 
ADD column BIT  -- Demonstration with NULL-able column added 
CONSTRAINT Constraint_name DEFAULT 0 WITH VALUES 
+9

यह एक महत्वपूर्ण बिंदु है। 'डेफॉल्ट' बाधा वाले कॉलम को मानना ​​आसान है, हमेशा एक मान होगा - अर्थात, नल नहीं है, भले ही 'न्यूल' निर्दिष्ट नहीं है। 27 nov. 122012-11-27 19:29:03

+5

@tkocmathla ओह, मैं 'बीआईटी 'डेटाटाइप के बारे में बात नहीं कर रहा था, मैं इस विशेष' बीआईटी' ** कॉलम ** के बारे में बात कर रहा था। उत्तर को देखें, कॉलम को 'न्यूल' के रूप में घोषित किया गया है। 20 aug. 142014-08-20 19:57:19


37

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

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

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

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

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

38

एसक्यूएल सर्वर 2008 आर 2-में, मैं डिजाइन करने के लिए जाना मोड - एक परीक्षण डेटाबेस में - और डिजाइनर का उपयोग कर और जीयूआई के साथ सेटिंग कर दिया मेरी दो कॉलम, और फिर कुख्यात राइट-क्लिक करें विकल्प "स्क्रिप्ट बदलें उत्पन्न" देता जोड़ने!

बैंग के साथ आपने सही अनुमान लगाया, ठीक से प्रारूपित गारंटी करने के लिए काम परिवर्तन स्क्रिप्ट एक छोटे से खिड़की दिखाई नहीं देता। आसान बटन दबाएं।


41

उपयोग:

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

संदर्भ: ALTER TABLE (Transact-SQL) (MSDN)


72

दो पंक्तियों केवल

ALTER TABLE MyTable 
ADD MyNewColumn INT NOT NULL DEFAULT 0 

37

वैकल्पिक रूप से सबसे बुनियादी संस्करण, आप स्पष्ट रूप से नाम के लिए बिना एक डिफ़ॉल्ट जोड़ सकते हैं बाधा:

ALTER TABLE [schema].[tablename] ADD DEFAULT ((0)) FOR [columnname] 

आप मौजूदा डिफ़ॉल्ट बाधाओं के साथ कोई समस्या है जब इस बाधा पैदा तो वे से हटाया जा सकता:

alter table [schema].[tablename] drop constraint [constraintname] 
  0

एफवाईआई, रखरखाव की आसानी के लिए मानक नामकरण योजना (उदा। "DF_Table_Column") का उपयोग करके बाधा का स्पष्ट रूप से नामकरण। अन्यथा, बाधा का पता लगाने के लिए और अधिक काम की आवश्यकता है। 22 nov. 172017-11-22 00:15:12


98
ALTER TABLE MYTABLE ADD MYNEWCOLUMN VARCHAR(200) DEFAULT 'SNUGGLES' 
+9

यह जोड़ना शून्य है! 17 sep. 132013-09-17 19:55:53

+2

@baaroz से पहले शून्य नहीं होना चाहिए, यह न्यूल के साथ काम करता है: वैकल्पिक तालिका में शामिल है MYNEWCOLUMN VARCHAR (200) नल डिफॉल्ट 'SNUGGLES' 22 feb. 152015-02-22 09:59:14


24

उदाहरण:

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

35

एक मौजूदा डेटाबेस से स्तंभ जोड़ने के लिए एक डिफ़ॉल्ट मान के साथ तालिका, हम उपयोग कर सकते हैं:

ALTER TABLE [dbo.table_name] 
    ADD [Column_Name] BIT NOT NULL 
Default (0) 

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

एक और अधिक पूरी तरह से SQL स्क्रिप्ट को डिफ़ॉल्ट मान नीचे की जाँच करता है, तो स्तंभ यह भी बाधा चेक इन और यह गिर अगर वहाँ एक है जोड़ने से पहले से मौजूद है शामिल है के साथ एक स्तंभ जोड़ने के लिए। इस स्क्रिप्ट में बाधा का भी नाम है, इसलिए हमारे पास एक अच्छा नामकरण सम्मेलन हो सकता है (मुझे डीएफ_ पसंद है) और यदि एसक्यूएल हमें ऐसे नाम से बाधा नहीं देगा जिसमें यादृच्छिक रूप से जेनरेट किया गया नंबर है; तो यह भी बाधा का नाम देने में सक्षम होना अच्छा है।

------------------------------------------------------------------------- 
-- Drop COLUMN 
-- Name of Column: Column_EmployeeName 
-- Name of Table: table_Emplyee 
-------------------------------------------------------------------------- 
IF EXISTS (
      SELECT 1 
      FROM INFORMATION_SCHEMA.COLUMNS 
      WHERE TABLE_NAME = 'table_Emplyee' 
       AND COLUMN_NAME = 'Column_EmployeeName' 
      ) 
    BEGIN 

     IF EXISTS (SELECT 1 
        FROM sys.default_constraints 
        WHERE object_id = OBJECT_ID('[dbo].[DF_table_Emplyee_Column_EmployeeName]') 
         AND parent_object_id = OBJECT_ID('[dbo].[table_Emplyee]') 
       ) 
      BEGIN 
       ------ DROP Contraint 

       ALTER TABLE [dbo].[table_Emplyee] DROP CONSTRAINT [DF_table_Emplyee_Column_EmployeeName] 
      PRINT '[DF_table_Emplyee_Column_EmployeeName] was dropped' 
      END 
    -- ----- DROP Column ----------------------------------------------------------------- 
     ALTER TABLE [dbo].table_Emplyee 
      DROP COLUMN Column_EmployeeName 
     PRINT 'Column Column_EmployeeName in images table was dropped' 
    END 

-------------------------------------------------------------------------- 
-- ADD COLUMN Column_EmployeeName IN table_Emplyee table 
-------------------------------------------------------------------------- 
IF NOT EXISTS (
       SELECT 1 
       FROM INFORMATION_SCHEMA.COLUMNS 
       WHERE TABLE_NAME = 'table_Emplyee' 
        AND COLUMN_NAME = 'Column_EmployeeName' 
       ) 
    BEGIN 
    ----- ADD Column & Contraint 
     ALTER TABLE dbo.table_Emplyee 
      ADD Column_EmployeeName BIT NOT NULL 
      CONSTRAINT [DF_table_Emplyee_Column_EmployeeName] DEFAULT (0) 
     PRINT 'Column [DF_table_Emplyee_Column_EmployeeName] in table_Emplyee table was Added' 
     PRINT 'Contraint [DF_table_Emplyee_Column_EmployeeName] was Added' 
    END 

GO 

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


12

प्रयास करें इस

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

51

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

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

19

उदाहरण:

ALTER TABLE tes 
ADD ssd NUMBER DEFAULT '0'; 

14

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

जोड़ें
ALTER TABLE Product 
ADD ReferenceID uniqueidentifier not null 
default (cast(cast(0 as binary) as uniqueidentifier)) 

4

एसक्यूएल सर्वर + ऑल्टर तालिका + कॉलम + डिफ़ॉल्ट मान uniqueidentifier जोड़ें ...

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

15

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

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

enter image description here


8

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

ALTER TABLE [test] 
ADD ID Int 

ALTER TABLE [table] 
ADD Column1 Datatype 

उदाहरण के लिए, उपयोगकर्ता बनाना चाहता है, तो यह स्वत: तो वृद्धि:

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

11
IF NOT EXISTS (
    SELECT * FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE TABLE_NAME ='TABLENAME' AND COLUMN_NAME = 'COLUMNNAME' 
) 
BEGIN 
    ALTER TABLE TABLENAME ADD COLUMNNAME Nvarchar(MAX) Not Null default 
END 
+2

मुझे बदलने के प्रयास से पहले 'EXISTS' चेक' पसंद नहीं है तालिका। बहुत अच्छा समाधान। यह कैसे काम करता है इस बारे में कुछ अतिरिक्त टिप्पणी इसे और भी उपयोगी बनाती है। 21 jun. 162016-06-21 20:14:15


4

, तो डिफ़ॉल्ट अशक्त, तो है:

  1. एसक्यूएल सर्वर में, लक्षित तालिका
  2. के वृक्ष को खोलने का अधिकार "कॉलम" क्लिक करें ==>New Column
  3. प्रकार स्तंभ का नाम, Select Type, और Nulls चेकबॉक्स
  4. मेनू पट्टी से दें चेक करें, Save

संपन्न पर क्लिक करें!


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

इस क्वेरी से आप डिफ़ॉल्ट मान 0.


6

यह नीचे दिए गए कोड द्वारा किया जा सकता के साथ डेटाप्रकार पूर्णांक के एक स्तंभ जोड़ सकते हैं।

CREATE TABLE STUDENT (STUDENT_ID INT NOT NULL) 

इसे करने के लिए एक स्तंभ जोड़ें::

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 

12

प्रथम नाम छात्र के साथ एक तालिका बनाने

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

SELECT * 
FROM STUDENT 

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

Image 1


5

ठीक है, मैं अब अपने पिछले जवाब देने के लिए कुछ संशोधन किया है। मैंने देखा है कि उत्तर में से कोई भी जवाब 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] 

4

आपने इस क्वेरी का उपयोग कर सकते हैं:

ALTER TABLE tableName ADD ColumnName datatype DEFAULT DefaultValue; 

6

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

ALTER TABLE {schemaName}.{tableName} 
    ADD {columnName} {datatype} NULL 
    CONSTRAINT {constraintName} DEFAULT {DefaultValue} 

UPDATE {schemaName}.{tableName} 
    SET {columnName} = {DefaultValue} 
    WHERE {columName} IS NULL 

ALTER TABLE {schemaName}.{tableName} 
    ALTER COLUMN {columnName} {datatype} NOT NULL 

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

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

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

मुझे पता चला है कि एक ही कथन में पूरी चीज करने से 4-8 मिनट के लिए हमारी अधिक सक्रिय टेबलों में से एक लॉक हो जाएगा और अक्सर मैंने प्रक्रिया को मार दिया है। यह विधि प्रत्येक भाग में आमतौर पर केवल कुछ सेकंड लगते हैं और न्यूनतम लॉकिंग का कारण बनता है।

ही, यदि आप पंक्तियों के अरबों के क्षेत्र में एक मेज है यह इतना की तरह अद्यतन batching लायक हो सकता है:

WHILE 1=1 
BEGIN 
    UPDATE TOP (1000000) {schemaName}.{tableName} 
     SET {columnName} = {DefaultValue} 
     WHERE {columName} IS NULL 

    IF @@ROWCOUNT < 1000000 
     BREAK; 
END 

4

सही तालिका पर क्लिक करें, अंतिम स्तंभ नाम के तहत क्लिक करें, और प्रवेश कॉलम जानकारी।

फिर एक डिफ़ॉल्ट मान या बाध्यकारी जोड़ें, स्ट्रिंग के लिए '1' या int के लिए 1 जैसे कुछ जोड़ें।


2

चरण -1।सबसे पहले आप तालिका को बदलने के लिए एक फ़ील्ड जोड़ें साथ

alter table table_name add field field_name data_type 

कदम -2 बनाएं डिफ़ॉल्ट

USE data_base_name; 
GO 
CREATE DEFAULT default_name AS 'default_value'; 

कदम -3 तो आप इस प्रक्रिया निष्पादित करने के लिए

exec sp_bindefault 'default_name' , 'schema_name.table_name.field_name' 

उदाहरण -

USE master; 
GO 
EXEC sp_bindefault 'today', 'HumanResources.Employee.HireDate'; 

0
This is for Sql Server 

ALTER TABLE TableName 
     ADD ColumnName (type) ->NULL OR NOT NULL 
    DEFAULT (default value) 
     WITH VALUES 
Example 

ALTER TABLE Activities 
     ADD status int NOT NULL DEFAULT (0) 
     WITH VALUES 
if want to add constraints then -> 

ALTER TABLE Table_1 
     ADD row3 int NOT NULL 
CONSTRAINT CONSTRAINT_NAME DEFAULT (0) 
     WITH VALUES 

1

डिफ़ॉल्ट मान के साथ नया स्तंभ जोड़ने

enter image description here


0
ALTER TABLE Table1 ADD Col3 INT NOT NULL DEFAULT(0)