Kolonnas ar noklusējuma vērtību pievienošana esošai SQL Server tabulā

SQL Server 2000 / SQL Server 2005 esošai tabulai var pievienot kolonnu ar noklusējuma vērtību?

Risinājums

Sintakse:

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

Piemērs:

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.

Piezīmes:

Izvēles ierobežojuma nosaukums:
Ja izlaidīsiet CONSTRAINT D_SomeTable_SomeCol, SQL Server automātiski ģenerēs
    noklusējuma ierobežojumu ar smieklīgu nosaukumu, piemēram: DF__SomeTa__SomeC__4FB7FEF6

Variants ar vērtību paziņojumu:
WITH VALUES ir nepieciešams tikai tad, ja jūsu kolonna ir nulliējama
    un vēlaties, lai noklusējuma vērtība tiktu izmantota esošajiem ierakstiem.
Ja jūsu sleja ir NEKĀ NULL, tad automātiski tiks izmantota noklusējuma vērtība
    visiem esošajiem ierakstiem neatkarīgi no tā, vai norādāt WITH VALUES vai nē.

Kā darbojas ievadi ar noklusējuma ierobežojumu:
Ja jūs ievietojat ierakstu KādāTabulā un nenorādāt KādaCol'vērtību, tad pēc noklusējuma tā būs 0.
Ja ievietojat Ierakstu un norādāt SomeCol's vērtību NULL (un jūsu slejā ir pieļaujami nulles skaitļi),
   , tad noklusējuma ierobežojums netiks ne izmantots un kā vērtība tiks ievietots NULL.

Piezīmes tika balstītas uz ikviena lieliskām atsauksmēm, kas sniegtas zemāk.
Īpašs paldies:
    @Yatrix, @WalterStabosz, @YahooSerious un @StackMan par komentāriem.

Komentāri (9)
ALTER TABLE Protocols
ADD ProtocolTypeID int NOT NULL DEFAULT(1)
GO

DEFAULT iekļaušana aizpilda kolonnu eksistējošās rindās ar noklusējuma vērtību, tāpēc ierobežojums NOT NULL netiek pārkāpts.

Komentāri (8)
ALTER TABLE ADD ColumnName {Column_Type} Constraint

MSDN rakstā ALTER TABLE (Transact-SQL) ir aprakstīta visa alter tabula sintakse.

Komentāri (0)