SQL සේවාදායකයේ පවතින වගුවකට පෙරනිමි අගයක් සහිත තීරුවක් එක් කරන්න


Answers:


3508

වාක්‍ය ඛණ්ඩය:

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_SomeColSQL සේවාදායකය
    පෙරනිමි- ප්‍රතිවිරෝධයක් ස්වයංක්‍රීයව උත්පාදනය කරයි.DF__SomeTa__SomeC__4FB7FEF6

විකල්ප ප්රකාශය සමග-සාරධර්ම:
මෙම WITH VALUESඔබේ තීරුව Nullable විට පමණයි අවශ්ය වන්නේ
    ඔබ අගය දැනට පවතින වාර්තා සඳහා භාවිතා පෙරනිමි ඕන.
ඔබේ තීරුව නම් NOT NULL, එය
    ඔබ සඳහන් WITH VALUESකළත් නැතත්, දැනට පවතින සියලුම වාර්තා සඳහා පෙරනිමි අගය ස්වයංක්‍රීයව භාවිතා කරයි .

පෙරනිමි-අවහිරතා සමග ආකාරය ඇතුල් වැඩ:
ඔබ බවට වාර්තා ඇතුල් නම් SomeTableහා නෑ නෑ නියම SomeColගේ අගය, එසේ නම් ඒ සඳහා ගෙවීම පැහැර හරිනු 0.
ඔබ වාර්තා ඇතුල් නම් හා නියම SomeColලෙස අගය ගේ NULL(සහ ඔබගේ තීරුව nulls ඉඩ),
    පසුව පෙරනිමි-අවහිරතා ඇත නොහැකි භාවිතා කළ සහ NULLඅගය ලෙස, ඇතුළු වනු ඇත.

සටහන් පදනම් වූයේ පහත දැක්වෙන සියලු දෙනාගේ හොඳ ප්‍රතිපෝෂණය මත ය.
විශේෂ ස්තූතිය:
    at යාට්‍රික්ස්, al වෝල්ටර්ස්ටබොස්, ah යාහූ සීරියස් සහ @ ස්ටැක්මන් ඔවුන්ගේ අදහස් සඳහා.


332
තීරුව අහෝසි කළ හැකි නම්, පවතින පේළි සඳහා භාවිතා කරන අගය ශුන්‍ය වනු ඇති බව මතක තබා ගන්න.
රිචඩ් කොලෙට්

17
CThecrocodilehunter Nullable තීරුව යන්නෙන් අදහස් කරන්නේ ඔබට තීරු අගය සඳහා Null ඇතුළු කළ හැකි බවයි. එය අහෝසි කළ හැකි තීරුවක් නොවේ නම්, ඔබට එම දත්ත වර්ගයේ යම් අගයක් ඇතුළත් කළ යුතුය. එබැවින්, පවතින වාර්තා සඳහා, ශුන්‍ය ඒවා තුළට ඇතුළු කරනු ඇති අතර නව වාර්තා වල, වෙනත් ආකාරයකින් දක්වා නොමැති නම් ඔබේ පෙරනිමි අගය ඇතුළත් වේ. තේරුමක් තිබේද?
යාට්‍රික්ස්

41
මම මෙම පිළිතුර dbugger ට වඩා ටිකක් හොඳට කැමතියි, මන්ද එය පෙරනිමි අවහිරතා පැහැදිලිවම නම් කරයි. ස්වයංක්‍රීයව ජනනය කරන ලද ඒවා හැර, dbugger හි සින්ටැක්ස් භාවිතයෙන් පෙරනිමි බාධකයක් තවමත් නිර්මාණය වේ. DROP-CREATE ස්ක්‍රිප්ට් ලිවීමේදී නිශ්චිත නම දැන ගැනීම පහසුය.
වෝල්ටර් ස්ටබොස්

18
Ert වර්ටිගෝ තීරුව නම් එය පමණක් සත්‍ය වේ 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;තීරුව සඳහා ඔබට NULL අගයන් 2 ක් පෙනෙනු ඇත b.
එරික්

48
WITH VALUESපවතින පේළි යාවත්කාලීන කිරීමට භාවිතා කරන්න . MSDN බලන්න : "එකතු කළ තීරුව ශුන්‍ය අගයන්ට ඉඩ දී WITH VALUESනිශ්චිතව දක්වා තිබේ නම්, පෙරනිමි අගය නව තීරුවේ ගබඩා කර ඇති අතර පවතින පේළි වලට එකතු වේ."
යාහූ බරපතල

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

DEFAULT ඇතුළත් කිරීම දැනට පවතින පේළි වල පෙරනිමි අගය සමඟ තීරුව පුරවන බැවින් NOT NULL අවහිරතා උල්ලං is නය නොවේ.


13
එම පිළිතුරේ ඇති ගැටළුව නම් පෙරනිමි අගය වලංගු වන්නේ නව වාර්තා සඳහා පමණි. පවතින වාර්තා වලට තවමත් NULL අගයක් ඇත.
රෝයි ගවිරෙල්

130
එය එසේ නොවන බව ඔබට පෙනී යනු ඇත. එසේ නොවුවහොත් සීමාව උල්ලං would නය වේ.
dbugger

35
පවතින පේළි වල තීරු පෙරනිමි අගයෙන් පුරවා ඇත. කුඩා ආනුභවික පරීක්ෂණයකින් එය සනාථ වනු ඇත.
dbugger

80
පැහැදිලි කිරීම සඳහා - "NOT NULL" විධානයෙන් ඉවත් කර ඇත්නම්, පවතින පේළි සඳහා අගය යාවත්කාලීන නොවන අතර එය NULL ලෙස පවතිනු ඇත. "NOT NULL" විධානයට ඇතුළත් කර ඇත්නම්, පවතින පේළි සඳහා වන අගය පෙරනිමියට ගැලපෙන පරිදි යාවත්කාලීන වේ.
ස්ටැක් මෑන්

15
බහු තීරු සඳහා ALTER TABLE table_1 ADD col_1 int NOT NULL DEFAULT (1), col_2 int NULL
aads

234

අහෝසි කළ හැකි තීරුවක් එක් කරන විට , WITH VALUESපවතින DEFAULT අගය පවතින පේළි වලට යොදන බව සහතික කරයි:

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

13
මෙය ප්‍රධාන කරුණකි. DEFAULTඅවහිරතා සහිත තීරුවකට සැමවිටම වටිනාකමක් ඇතැයි උපකල්පනය කිරීම පහසුය - එනම්, NOT NULLනිශ්චිතව දක්වා නොමැති වුවද, NULL නොවන්න.
බිල් බ්‍රින්ක්ලි

6
ktkocmathla අහ්, මම කතා කළේ BITදත්ත සමුදාය ගැන නොවේ , මම මේ විශේෂිත BIT තීරුව ගැන කතා කරමින් සිටියෙමි . පිළිතුර දෙස බලන්න, තීරුව ලෙස ප්‍රකාශයට පත් කෙරේ NOT NULL.
rsenna

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
පෙරනිමි අගය සීමා කිරීමට පෙර නව "අහෝසි කළ නොහැකි" තීරුව නිර්මාණය කර ඇති නිසා මේසය තුළ දැනටමත් අන්තර්ගතයක් තිබේ නම් මෙය ක්‍රියා නොකරනු ඇත
WDuffy

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

13
මීට පෙර ශුන්‍ය නොවිය යුතුය
baaroz

5
abaaaroz, මෙය NOT NULL සමඟ ක්‍රියා කරයි: ALTER TABLE MYTABLE ADD MYNEWCOLUMN VARCHAR (200) NULL DEFAULT 'SNUGGLES'
shaijut

100

ඔබ එකතු කරන තීරුවට අවහිරයක් ඇති නමුත් පරෙස්සම් NOT NULLනොවන්න DEFAULT(අගය). ALTER TABLEවගුවේ පේළි තිබේ නම් එම ප්‍රකාශය අසාර්ථක වනු ඇත. විසඳුම වන්නේ එක්කෝ NOT NULLනව තීරුවෙන් ඇති අවහිරතා ඉවත් කිරීම හෝ ඒ සඳහා DEFAULTබාධකයක් සැපයීමයි .


2
ඒ ගැන SQL සාම්පලයක් තිබේද?
කික්නෙට්

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 )

පෙරනිමි අගයක් සහිත පවතින දත්ත සමුදා වගුවකට තීරුවක් එක් කිරීමට තවත් ක්‍රමයක් මෙන්න.

පෙරනිමි අගයක් සහිත තීරුවක් එක් කිරීම සඳහා වඩාත් සවිස්තරාත්මක SQL ස්ක්‍රිප්ට් එකක් පහළින් ඇති අතර එය එකතු කිරීමට පෙර තීරුව තිබේදැයි පරීක්ෂා කිරීම ද අවහිරතා පරීක්ෂා කර එකක් තිබේ නම් එය අතහැර දමයි. මෙම ස්ක්‍රිප්ටයේ ද අවහිරතා ඇති බැවින් අපට ලස්සන නම් කිරීමේ සම්මුතියක් (මම DF_ ට කැමතියි) ලබා ගත හැකි අතර එසේ නොවේ නම් අහඹු ලෙස ජනනය කරන ලද සංඛ්‍යාවක් ඇති නමක් සමඟ 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

පෙරනිමි අගයක් සහිත පවත්නා දත්ත සමුදා වගුවකට තීරුවක් එක් කිරීමට මෙය ක්‍රම දෙකකි.


52

ඔබට පහත දැක්වෙන ආකාරයෙන් T-SQL සමඟ එය කළ හැකිය.

 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();''' ;

50

SQL Server 2008-R2 හි, මම සැලසුම් මාදිලියට - පරීක්ෂණ දත්ත ගබඩාවකට ගොස්, නිර්මාණකරු භාවිතා කරමින් මගේ තීරු දෙක එකතු කර GUI සමඟ සැකසුම් සකස් කළෙමි, එවිට කුප්‍රකට Right-Click" වෙනස් කිරීමේ ස්ක්‍රිප්ට් උත්පාදනය කරන්න " යන විකල්පය ලබා දෙයි !

නිසි ලෙස හැඩගස්වා ඇති සහතික කළ හැකි වැඩ වෙනස් කිරීමේ ස්ක්‍රිප්ට් එක සමඟ කුඩා කවුළුවක් දිස් වේ. පහසු බොත්තම ඔබන්න.


48

විකල්පයක් ලෙස, අවහිරතා පැහැදිලිව නම් නොකර ඔබට පෙරනිමියක් එක් කළ හැකිය:

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

මෙම අවහිරතා නිර්මාණය කිරීමේදී පවතින පෙරනිමි සීමාවන් සමඟ ඔබට ගැටළුවක් ඇත්නම් ඒවා ඉවත් කළ හැක්කේ:

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

1
නඩත්තු කිරීමේ පහසුව සඳහා FYI, සම්මත නම් කිරීමේ යෝජනා ක්‍රමයක් (උදා: "DF_Table_Column") භාවිතා කරමින් අවහිරතා පැහැදිලිව නම් කිරීම. එසේ නොමැති නම්, අවහිරතා සොයා ගැනීම සඳහා වැඩි වැඩක් අවශ්ය වේ.
මයික් ක්‍රිස්ටියන්

43

මෙය SSMS GUI හි ද කළ හැකිය. මම පෙරනිමි දිනයක් පහතින් පෙන්වන නමුත් පෙරනිමි අගය ඕනෑම දෙයක් විය හැකිය.

  1. ඔබේ වගුව නිර්මාණ දර්ශනයෙහි තබන්න (වස්තු ගවේෂක-> නිර්මාණයේ මේසය මත දකුණු ක්ලික් කරන්න)
  2. මේසයට තීරුවක් එක් කරන්න (නැතහොත් එය දැනටමත් තිබේ නම් යාවත්කාලීන කිරීමට අවශ්‍ය තීරුව මත ක්ලික් කරන්න)
  3. පහත දැක්වෙන තීරු ගුණාංගවල, පහත පින්තූරයේ ඇති පරිදි පෙරනිමි අගය හෝ බන්ධන ක්ෂේත්‍රය තුළ ඔබට අවශ්‍ය ඕනෑම වටිනාකමක් ඇතුළත් කරන්න (getdate())හෝ abcහෝ 0කරන්න :

රූප විස්තරය මෙහි ඇතුළත් කරන්න



32

උදාහරණයක්:

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


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

මෙයට පිළිතුරු රාශියක් ඇත, නමුත් මෙම දීර් extended ක්‍රමය එකතු කිරීමේ අවශ්‍යතාවය මට දැනේ. මෙය බොහෝ දිගු බවක් පෙනේ, නමුත් ඔබ සක්‍රීය දත්ත ගබඩාවක පේළි මිලියන ගණනක් ඇති වගුවකට NULL ක්ෂේත්‍රයක් එකතු කරන්නේ නම් එය අතිශයින් ප්‍රයෝජනවත් වේ.

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

මෙය කරන්නේ තීරුව ශුන්‍ය කළ හැකි ක්ෂේත්‍රයක් ලෙස එකතු කිරීම සහ පෙරනිමි අගය සමඟ සියලු ක්ෂේත්‍ර පෙරනිමි අගයට යාවත්කාලීන කිරීම (හෝ ඔබට වඩාත් අර්ථවත් අගයන් පැවරිය හැකිය), අවසානයේ එය තීරුව NULL ලෙස වෙනස් කරයි.

එයට හේතුව ඔබ විශාල පරිමාණ වගුවක් යාවත්කාලීන කර සෑම පේළියකටම ලිවිය යුතු නව ශුන්‍ය නොවන ක්ෂේත්‍රයක් එක් කළහොත් එමඟින් තීරුව එකතු කර සියලු අගයන් ලිවීමෙන් මුළු වගුවම අගුළු දමනු ඇත.

මෙම ක්‍රමය මඟින් ඉතා වේගයෙන් ක්‍රියාත්මක වන ශුන්‍ය තීරුව එකතු කරනු ඇති අතර පසුව ශුන්‍ය නොවන තත්වය සැකසීමට පෙර දත්ත පුරවනු ඇත.

මුළු ප්‍රකාශයම එක ප්‍රකාශයකින් කිරීමෙන් අපගේ වඩාත් ක්‍රියාකාරී වගුවක් මිනිත්තු 4-8 අතර කාලයක් අගුළු දමා ඇති බව මට පෙනී ගොස් ඇති අතර බොහෝ විට මම එම ක්‍රියාවලිය විනාශ කර ඇත්තෙමි. මෙම ක්‍රමය එක් එක් කොටස සාමාන්‍යයෙන් ගත වන්නේ තත්පර කිහිපයක් පමණක් වන අතර අවම අගුලු දැමීමට හේතු වේ.

මීට අමතරව, ඔබට පේළි බිලියන ගණනක වගුවක් තිබේ නම් එය යාවත්කාලීන කිරීම වටී.

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

    IF @@ROWCOUNT < 1000000
        BREAK;
END


18

SQL සේවාදායකය + වෙනස් වගුව + තීරුව එක් කරන්න + පෙරනිමි අගය අද්විතීය හඳුනාගැනීමක්

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
මීට වසර ගණනාවකට පෙර සිට දැනටමත් පවතින පිළිතුරු වලට වඩා මෙය කිසිදු වටිනාකමක් එක් නොකරයි.
nvoigt

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

මෙය SQL සේවාදායකය සඳහා වේ:

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
මීට වසර ගණනාවකට පෙර සිට දැනටමත් පවතින පිළිතුරු වලට වඩා මෙය කිසිදු වටිනාකමක් එක් නොකරයි.
nvoigt

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වගුව වගුවේ තීරුව තිබේ නම් ඔබ පහත දැක්වෙන කේතයේ කොටසක් පමණක් ක්‍රියාත්මක කරන්නේ නම් SQL සේවාදායක විමසුම් සාදන්නාගේ දෝෂයක් ඔබට පෙනෙනු ඇත. නමුත් එය නොපවතී නම් පළමු වරට ක්‍රියාත්මක කිරීමේදී දෝෂයක් ඇති නොවේ.

ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
[WITH VALUES]
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.