Kā SQL Server 2000 / SQL Server 2005 esošai tabulai var pievienot kolonnu ar noklusējuma vērtību?
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.
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.
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.
ALTER TABLE ADD ColumnName {Column_Type} Constraint
MSDN rakstā ALTER TABLE (Transact-SQL) ir aprakstīta visa alter tabula sintakse.