在SQL Server中为现有的表添加一个带有默认值的列

SQL Server 2000/SQL Server 2005中,如何将一个带有默认值的列添加到现有的表中?

解决办法

语法。

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_SomeCol,那么SQL Server会自动生成
    一个默认的约束,有一个有趣的名字,比如。DF__SomeTa__SomeC__4FB7FEF6

可选的With-Values语句:
只有当你的柱子是Nullable

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

包含了DEFAULT后,就会用默认值来填充现有的行中的列,所以不会违反NOT NULL约束。

评论(8)
ALTER TABLE ADD ColumnName {Column_Type} Constraint

MSDN文章ALTER TABLE (Transact-SQL)中有所有改变表的语法。

评论(0)