Stulpelio su numatytąja reikšme įtraukimas į esamą SQL serverio lentelę

Kaip SQL Server 2000 / SQL Server 2005 į esamą lentelę įtraukti stulpelį su numatytąja reikšme?

Sprendimas

Sintaksė:

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

Pavyzdys:

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.

Pastabos:

Neprivalomas apribojimo pavadinimas:
Jei nepateiksite CONSTRAINT D_SomeTable_SomeCol, SQL Server automatiškai sukurs
    numatytąją sąlygą su juokingu pavadinimu, pvz: DF__SomeTa__SomeC__4FB7FEF6

Vartojamasis With-Values teiginys:
WITH VALUES reikalingas tik tada, kai stulpelis yra nulinis
    ir norite, kad numatytoji reikšmė būtų naudojama esamiems įrašams.
Jei jūsų stulpelis yra NOT NULL, automatiškai bus naudojama numatytoji reikšmė
    visiems esamiems įrašams, nesvarbu, ar nurodysite WITH VALUES, ar ne.

Kaip veikia įterpimai su numatytąja verte:
Jei įterpiate įrašą į SomeTable ir nenurodote SomeCol'reikšmės, ji bus numatytoji 0.
Jei įterpiate Įrašą ir ir nurodote SomeCol's reikšmę kaip NULL (o jūsų stulpelis leidžia nulines reikšmes),
   , tuomet numatytasis apribojimas nebus naudojamas ir kaip reikšmė bus įterpta NULL.

Pastabos buvo parengtos atsižvelgiant į puikius visų žemiau pateiktus atsiliepimus.
Ypatinga padėka:
    @Yatrix, @WalterStabosz, @YahooSerious ir @StackMan už pastabas.

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

Įtraukus DEFAULT, stulpelis egzistuojančiose eilutėse užpildomas numatytąja reikšme, todėl apribojimas NOT NULL nepažeidžiamas.

Komentarai (8)
ALTER TABLE ADD ColumnName {Column_Type} Constraint

MSDN straipsnyje ALTER TABLE (Transact-SQL) pateikiama visa alter table sintaksė.

Komentarai (0)