এসকিউএল সার্ভারে বিদ্যমান টেবিলটিতে একটি কলাম একটি ডিফল্ট মান যুক্ত করুন


2763

আমি কীভাবে এসকিউএল সার্ভার 2000 / এসকিউএল সার্ভার 2005 এর বিদ্যমান সারণিতে ডিফল্ট মান সহ একটি কলাম যুক্ত করতে পারি ?


উত্তর:


3497

বাক্য গঠন:

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.

মন্তব্য:

Alচ্ছিক সীমাবদ্ধতার নাম:
আপনি যদি ছেড়ে যান CONSTRAINT D_SomeTable_SomeColতবে এসকিউএল সার্ভার
    একটি মজাদার নামের মতো একটি ডিফল্ট-কনট্রেন্টটি স্বয়ংক্রিয়ভাবে তৈরি করবে:DF__SomeTa__SomeC__4FB7FEF6

ঐচ্ছিক with-মানগুলি বিবৃতি: শুধুমাত্র প্রয়োজন হয় যখন আপনার কলাম Nullable হয়     এবং আপনি ডিফল্ট মান বিদ্যমান রেকর্ড করার জন্য ব্যবহার করা চাই। যদি আপনার কলামটি হয় , তবে এটি     নির্দিষ্ট করে দেওয়া হোক না কেন এটি সমস্ত বিদ্যমান রেকর্ডগুলির জন্য স্বয়ংক্রিয়ভাবে ডিফল্ট মানটি ব্যবহার করবে ।
WITH VALUES

NOT NULL
WITH VALUES

ডিফল্ট-সীমাবদ্ধতার সাথে কীভাবে সন্নিবেশগুলি কাজ করে:
আপনি যদি কোনও রেকর্ড সন্নিবেশ করান SomeTableএবং এর মান নির্দিষ্ট না করেনSomeCol তবে এটি ডিফল্ট হয়ে যাবে 0
যদি আপনি একটি রেকর্ড সন্নিবেশ করেন এবংSomeCol এর মান নির্দিষ্ট করে NULL(এবং আপনার কলামটি নালার অনুমতি দেয়),
    তবে ডিফল্ট-সীমাবদ্ধতা ব্যবহার করা হবে না এবং NULLমান হিসাবে সন্নিবেশ করা হবে।

নোটগুলি নীচে প্রত্যেকের দুর্দান্ত প্রতিক্রিয়ার ভিত্তিতে ছিল।
বিশেষভাবে ধন্যবাদ:
    @ ইয়াত্রিক্স, @ ওয়াল্টারস্টাবোস্জ, @ ইয়াহু সিরিয়াস, এবং @ স্ট্যাকম্যান তাদের মন্তব্যের জন্য।


332
মনে রাখবেন যে কলামটি যদি অযোগ্য হয় তবে নালটি বিদ্যমান সারিগুলির জন্য ব্যবহৃত মান হবে।
রিচার্ড কললেট 31'12

17
@Thecocodilehunter নালাম কলামের অর্থ আপনি কলামের মানের জন্য নাল সন্নিবেশ করতে পারেন। যদি এটি কোনও কমানো কলাম না হয় তবে আপনাকে সেই ডেটা ধরণের কিছু মান সন্নিবেশ করতে হবে। সুতরাং, বিদ্যমান রেকর্ডগুলির জন্য নাল themোকানো হবে এবং নতুন রেকর্ডগুলিতে, অন্যথায় নির্দিষ্ট না করা না হলে আপনার ডিফল্ট মান beোকানো হবে। ধারণা তৈরী কর?
ইয়াাত্রিক্স

41
আমি এই উত্তরটি dbugger এর চেয়ে কিছুটা ভাল পছন্দ করি কারণ এটি স্পষ্টভাবে ডিফল্ট বাধাটির নাম দেয়। একটি ডিফল্ট সীমাবদ্ধতা এখনও ডাবুগারের সিনট্যাক্স ব্যবহার করে তৈরি করা হয়েছে, এর নামটি স্বয়ংক্রিয়ভাবে উত্পাদিত ব্যতীত। DROP-CREATE স্ক্রিপ্টগুলি লেখার সময় সঠিক নামটি জানা সহজ।
ওয়াল্টার স্ট্যাবোজ

18
@Vertigo যে শুধুমাত্র সত্য কলাম হলে হয় NOT NULL। দয়া করে এটি চেষ্টা করুন: create table blah(a int not null primary key clustered); insert blah values (1), (2); alter table blah add b int null constraint df_blah_b default (0); select * from blah;আপনি কলামের জন্য 2 টি নাল মান দেখতে পাবেন b
এরিক

48
WITH VALUESবিদ্যমান নালযোগ্য সারিগুলি আপডেট করতে ব্যবহার করুন । এমএসডিএন দেখুন : "যদি যুক্ত কলামটি নাল মানগুলিকে মঞ্জুরি দেয় এবং WITH VALUESনির্দিষ্ট করা হয় তবে ডিফল্ট মানটি নতুন কলামে বিদ্যমান সারিগুলিতে যুক্ত থাকে" "
ইয়াহু সিরিয়াস

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

ডিফল্ট অন্তর্ভুক্তি ডিফল্ট মান সহ বিদ্যমান সারিগুলিতে কলামটি পূরণ করে , তাই নন নলের বাধা লঙ্ঘন করা হয় না।


13
এই উত্তরটির সাথে সমস্যাটি হ'ল ডিফল্ট মানটি কেবলমাত্র নতুন রেকর্ডগুলির জন্য বৈধ। বিদ্যমান রেকর্ডগুলির এখনও নূন্যমূল্য থাকবে।
রই গাভিরেল

130
আপনি দেখতে পাবেন যে এটি হয় না। অন্যথায় সীমাবদ্ধতা লঙ্ঘন করা হবে।
ডাবুগার

35
বিদ্যমান সারিগুলির কলামগুলি ডিফল্ট মান দিয়ে পূর্ণ হয়। একটু পরীক্ষামূলক পরীক্ষা এটি প্রমাণ করবে।
dbugger

80
কেবল স্পষ্ট করে বলার জন্য - "নট নুল" কমান্ড থেকে বাদ দেওয়া হলে বিদ্যমান সারিগুলির মান আপডেট করা হবে না এবং নাল থেকে যাবে। যদি কমান্ডের মধ্যে "নট নল" অন্তর্ভুক্ত করা হয়, বিদ্যমান সারিগুলির মানটি ডিফল্টর সাথে মিলে যায়।
ম্যান স্ট্যাক ম্যান

15
একাধিক কলামের জন্য টেবিলের টেবিলের মধ্যে টেবিল_1 যোগ করুন কোল_1 ইন্ট নট ডিফল্ট (১), কল_2 ইন নুল
এডি

233

একটি নল কলাম যুক্ত করার সময় , WITH VALUESনিশ্চিত করা হবে যে নির্দিষ্ট ডিফল্ট মান বিদ্যমান সারিগুলিতে প্রয়োগ করা হয়েছে:

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

13
এটি একটি মূল বিষয়। DEFAULTসীমাবদ্ধতার সাথে একটি কলামের সর্বদা মান থাকবে - এটি NOT NULLনির্দিষ্ট না হওয়া সত্ত্বেও, NULL হবে না UL
বিল ব্রিংকলে

6
@ টকোকমাথলা উহ, আমি BITডেটাটাইপ নিয়ে কথা বলছিলাম না , আমি এই বিশেষ BIT কলামটি নিয়ে কথা বলছিলাম । উত্তরটি দেখুন, কলামটি হিসাবে ঘোষিত হয়েছে NOT NULL
RSSenna

136
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

7
টেবিলটিতে ইতিমধ্যে বিষয়বস্তু থাকলে এটি কাজ করবে না কারণ ডিফল্ট মান সীমাবদ্ধতার আগে নতুন "নন নয়" কলাম তৈরি করা হয়েছে
ডাব্লুডাফি

129
ALTER TABLE MYTABLE ADD MYNEWCOLUMN VARCHAR(200) DEFAULT 'SNUGGLES'

13
এই অ্যাড নাল! আগে
নਾਲ

5
@ বারোজ, এটি নল নয়: কাজ করে না মাইনিউকলামন ভর্চার (200) এ্যাবলেট টেস্ট মাইটিবল 'স্নিগলস' নয়
শাইজুত

100

আপনি যে কলামটি যুক্ত করছেন তাতে NOT NULLবাধা থাকলেও DEFAULTসীমাবদ্ধতা (মান) নেই Be ALTER TABLEবিবৃতি যে ক্ষেত্রে ব্যর্থ হয়ে যাবে টেবিল মধ্যে কোন সারি হয়েছে। সমাধানটি হ'ল হয় NOT NULLনতুন কলাম থেকে সীমাবদ্ধতা সরিয়ে নেওয়া বা DEFAULTএটির জন্য একটি সীমাবদ্ধতা সরবরাহ করা।


2
এটি সম্পর্কে কোনও এসকিউএল নমুনা ?
কিকনেট

98

শুধুমাত্র দুটি লাইন সহ সর্বাধিক প্রাথমিক সংস্করণ

ALTER TABLE MyTable
ADD MyNewColumn INT NOT NULL DEFAULT 0

81

ব্যবহার করুন:

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

ALTER TABLE myTableName  
ADD RecordAddedDate SMALLDATETIME NULL DEFAULT (GETDATE())  
GO 

79

আপনি যদি একাধিক কলাম যুক্ত করতে চান তবে উদাহরণস্বরূপ এটি করতে পারেন:

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


54

একটি ডিফল্ট মান সহ একটি বিদ্যমান ডাটাবেস সারণিতে একটি কলাম যুক্ত করতে, আমরা ব্যবহার করতে পারি:

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

ডিফল্ট মান সহ একটি বিদ্যমান ডাটাবেস সারণিতে কলাম যুক্ত করার অন্য উপায় এখানে।

একটি ডিফল্ট মান সহ একটি কলাম যুক্ত করার জন্য আরও পুঙ্খানুপুঙ্খ এসকিউএল স্ক্রিপ্টের নীচে এটি অন্তর্ভুক্ত করার আগে কলামটি সীমাবদ্ধ রয়েছে কিনা তা পরীক্ষা করে দেখুন এবং এটি রয়েছে কিনা তা অন্তর্ভুক্ত রয়েছে তা পরীক্ষা করে নিচে রয়েছে। এই স্ক্রিপ্টটিও এই সীমাবদ্ধতার নাম দেয় যাতে আমরা একটি সুন্দর নামকরণের কনভেনশন করতে পারি (আমার পছন্দ DF_) এবং যদি এসকিউএল না হয় তবে আমাদের নামের সাথে একটি সীমাবদ্ধতা দেয় যা এলোমেলোভাবে উত্পন্ন সংখ্যা রয়েছে; সুতরাং বাধাটির নামও রাখতে পেরে খুব ভাল লাগছে।

-------------------------------------------------------------------------
-- 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

ডিফল্ট মান সহ একটি বিদ্যমান ডাটাবেস সারণিতে কলাম যুক্ত করার জন্য এই দুটি উপায়।


52

আপনি টি-এসকিউএল দিয়ে নিম্নলিখিত পদ্ধতিতে জিনিসটি করতে পারেন।

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

পাশাপাশি আপনি এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিও ব্যবহার করতে পারেন ডিজাইনের মেনুতে ডান ক্লিক করে টেবিলের ডিফল্ট মান সেট করে।

এবং তদ্ব্যতীত, আপনি যদি ডাটাবেসে সমস্ত সারণীতে একই কলামটি (এটি উপস্থিত না থাকে) যুক্ত করতে চান, তবে ব্যবহার করুন:

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

50

এসকিউএল সার্ভার ২০০৮-আর 2 এ, আমি ডিজাইন মোডে যাই - একটি পরীক্ষণ ডাটাবেসে - এবং ডিজাইনার ব্যবহার করে আমার দুটি কলাম যুক্ত করে GUI এর সাথে সেটিংস তৈরি করি, এবং তারপরে কুখ্যাতটি Right-Click" জেনারেট চেঞ্জ স্ক্রিপ্ট " বিকল্পটি দেয় !

ব্যাং আপ এর সাহায্যে কিছুটা উইন্ডো পপ হয়, আপনি এটি অনুমান করেছিলেন, সঠিকভাবে ফর্ম্যাট করে কাজ-থেকে-পরিবর্তন কাজের স্ক্রিপ্ট। সহজ বোতামটি হিট করুন।


48

বিকল্পভাবে, আপনি সীমাবদ্ধতার নাম স্পষ্টভাবে না বলেই একটি ডিফল্ট যুক্ত করতে পারেন:

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

এই সীমাবদ্ধতা তৈরি করার সময় যদি আপনার বিদ্যমান ডিফল্ট সীমাবদ্ধতার সাথে সমস্যা থাকে তবে সেগুলি দ্বারা মুছে ফেলা যেতে পারে:

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

1
এফওয়াইআই, রক্ষণাবেক্ষণের স্বাচ্ছন্দ্যের জন্য স্পষ্টভাবে একটি স্ট্যান্ডার্ড নামকরণ স্কিম ব্যবহার করে (যেমন "DF_Table_ Column") সীমাবদ্ধতার নামকরণ। অন্যথায়, সীমাবদ্ধতা সনাক্তকরণে আরও কাজ করা দরকার।
মাইক ক্রিশ্চিয়ান

43

এটি এসএসএমএস জিইউতেও করা যেতে পারে। আমি নীচে একটি ডিফল্ট তারিখ দেখায় তবে অবশ্যই ডিফল্ট মানটি যাই হোক না কেন হতে পারে।

  1. আপনার টেবিলটি ডিজাইনের দৃশ্যে রাখুন (অবজেক্ট এক্সপ্লোরার-> ডিজাইনের টেবিলের উপর ডান ক্লিক করুন)
  2. সারণিতে একটি কলাম যুক্ত করুন (বা আপনি যে কলামটি ইতিমধ্যে বিদ্যমান তা আপডেট করতে চাইলে এটি ক্লিক করুন)
  3. কলাম প্রোপার্টি নিচের প্রবেশ (getdate())বা abcবা 0বা যাই হোক না কেন মান আপনি চান ডিফল্ট মান বা বাঁধাই নীচে অঙ্কিত ক্ষেত্র:

এখানে চিত্র বর্ণনা লিখুন





22

প্রথমে নামের শিক্ষার্থী সহ একটি সারণী তৈরি করুন:

CREATE TABLE STUDENT (STUDENT_ID INT NOT NULL)

এটিতে একটি কলাম যুক্ত করুন:

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

SELECT * 
FROM STUDENT

সারণীটি তৈরি করা হয় এবং একটি কলাম একটি ডিফল্ট মান সহ একটি বিদ্যমান টেবিলের সাথে যুক্ত করা হয়।

ছবি 1


19

এর অনেক উত্তর রয়েছে তবে আমি এই বর্ধিত পদ্ধতিটি যুক্ত করার প্রয়োজন অনুভব করছি। এটি অনেক বেশি দীর্ঘ বলে মনে হচ্ছে তবে আপনি যদি সক্রিয় ডাটাবেসে কয়েক মিলিয়ন সারি যুক্ত একটি টেবিলের জন্য একটি নল নীল ক্ষেত্র যুক্ত না করেন তবে এটি অত্যন্ত কার্যকর।

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

এটি যা করবে তা হ'ল কলামটি বাতিলযোগ্য ক্ষেত্র হিসাবে যুক্ত করা এবং ডিফল্ট মান সহ, সমস্ত ক্ষেত্রকে ডিফল্ট মানটিতে আপডেট করুন (বা আপনি আরও অর্থবোধক মান নির্ধারণ করতে পারেন) এবং অবশেষে এটি কলামটি নাল নয় change

এর কারণ হ'ল যদি আপনি একটি বৃহত স্কেল টেবিল আপডেট করেন এবং একটি নতুন নয় নাল ক্ষেত্র যুক্ত করেন তবে এটি প্রতিটি একক সারিতে লিখতে হবে এবং এটি কলাম যুক্ত করার সাথে সাথে পুরো টেবিলটি লক আউট করবে এবং তারপরে সমস্ত মান লিখবে।

এই পদ্ধতিটি নলযোগ্য কলাম যুক্ত করবে যা নিজে থেকে অনেক দ্রুত পরিচালিত হয়, তারপরে নাল স্থিতি স্থির করার আগে ডেটা পূরণ করে।

আমি খুঁজে পেয়েছি যে পুরো জিনিসটি একটি বিবৃতিতে করা আমাদের 4-8 মিনিটের জন্য আমাদের আরও সক্রিয় টেবিলটিকে আটকিয়ে রাখবে এবং প্রায়শই আমি প্রক্রিয়াটি মেরে ফেলেছি। এই পদ্ধতিতে প্রতিটি অংশ সাধারণত কয়েক সেকেন্ড সময় নেয় এবং ন্যূনতম লকিংয়ের কারণ হয়।

তদতিরিক্ত, কয়েক বিলিয়ন সারিগুলির ক্ষেত্রের যদি আপনার কোনও টেবিল থাকে তবে এটি আপডেটের মতো ব্যাচিংয়ের পক্ষে মূল্যবান হতে পারে:

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

    IF @@ROWCOUNT < 1000000
        BREAK;
END


18

এসকিউএল সার্ভার + টেবিল পরিবর্তন করুন + কলাম + ডিফল্ট মান অনন্য পরিচয়কারী যুক্ত করুন

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

18
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

3
NOT EXISTSটেবিল পরিবর্তন করার চেষ্টা করার আগে আমি চেকটি পছন্দ করি । খুব ভাল সমাধান। এই কাজগুলি কীভাবে এটিকে আরও কার্যকর করে তুলবে সে সম্পর্কে কিছু অতিরিক্ত মন্তব্য।
মাইকেল গসকিল

17
--Adding Value with Default Value
ALTER TABLE TestTable
ADD ThirdCol INT NOT NULL DEFAULT(0)
GO

প্রকৃত কোড সহ চিত্রটি প্রতিস্থাপন করতে পারেন? যেমনটি অনুলিপি করা এবং আটকানো কঠিন।
ডেভিড ফেবার

6
এটি বহু বছর আগে থেকেই বিদ্যমান উত্তরগুলির তুলনায় কোনও মান যুক্ত করে না।
নভে

14

একটি টেবিলটিতে একটি নতুন কলাম যুক্ত করুন:

ALTER TABLE [table]
ADD Column1 Datatype

উদাহরণ স্বরূপ,

ALTER TABLE [test]
ADD ID Int

যদি ব্যবহারকারী এটিকে স্বয়ংক্রিয়ভাবে বর্ধিত করতে চান তবে:

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

13

এটি এসকিউএল সার্ভারের জন্য:

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

উদাহরণ:

ALTER TABLE Activities
ADD status int NOT NULL DEFAULT (0)
WITH VALUES

আপনি যদি সীমাবদ্ধতাগুলি যুক্ত করতে চান তবে:

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

7
এটি বহু বছর আগে থেকেই বিদ্যমান উত্তরগুলির তুলনায় কোনও মান যুক্ত করে না।
নভে

11

এটি নীচের কোড দ্বারা করা যেতে পারে।

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

10

নীচের প্রশ্নের সাথে চেষ্টা করুন:

ALTER TABLE MyTable
ADD MyNewColumn DataType DEFAULT DefaultValue

এটি সারণীতে একটি নতুন কলাম যুক্ত করবে।


6
এই প্রশ্নের এই প্রশ্নের জন্য অন্য ব্যবহারকারী দ্বারা দেওয়া
janith1024

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

এই ক্যোয়ারী থেকে আপনি ডিফল্ট মান 0 দিয়ে ডেটাটাইপ পূর্ণসংখ্যার কলাম যুক্ত করতে পারেন।


9

ঠিক আছে, আমার এখন আমার আগের উত্তরের কিছুটা পরিবর্তন আছে। আমি লক্ষ্য করেছি যে উত্তরগুলির কোনও উল্লেখ নেই 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কলামটি টেবিল টেবিলটিতে উপস্থিত থাকে তবে আপনি নীচে প্রদত্ত কোডের অংশটি সম্পাদন করলে আপনি এসকিউএল সার্ভার কোয়েরি বিল্ডারে একটি ত্রুটি দেখতে পাবেন। তবে যদি এটি বিদ্যমান না থাকে তবে প্রথমবার কার্যকর করার সময় কোনও ত্রুটি হবে না।

ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
[WITH VALUES]
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.