如何将具有默认值的列添加到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
如: DF__SomeTa__SomeC__4FB7FEF6
可选的 With-Values 声明:
仅当您的 Column 为 Nullable 时才需要WITH VALUES
并且您想要用于现有记录的默认值。
如果 Column 为NOT NULL
,则它将自动使用默认值
对于所有现有记录,无论您是否指定WITH VALUES
。
插件如何使用默认约束:
如果将 Record 插入SomeTable
并且不指定SomeCol
的值,则默认为0
。
如果您插入 Record 并指定SomeCol
的值为NULL
(并且您的列允许空值),
然后将不使用 Default-Constraint,并且将插入NULL
作为 Value。
笔记基于以下每个人的好评。
特别感谢:
@Yatrix,@ WalterStabosz,@ YahooSerious 和 @StackMan 的评论。
ALTER TABLE Protocols
ADD ProtocolTypeID int NOT NULL DEFAULT(1)
GO
包含DEFAULT 会使用默认值填充现有行中的列,因此不会违反 NOT NULL 约束。
添加可空列时 , WITH VALUES
将确保将特定的 DEFAULT 值应用于现有行:
ALTER TABLE table
ADD column BIT -- Demonstration with NULL-able column added
CONSTRAINT Constraint_name DEFAULT 0 WITH VALUES