如何将具有默认值的列添加到现有表中 SQL Server 2000 / SQL Server 2005?
如何将具有默认值的列添加到现有表中 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声明:
该 WITH VALUES
只有在Column可以为Nullable时才需要
并且您想要用于现有记录的默认值。
如果你的专栏是 NOT NULL
,然后它会自动使用默认值
对于所有现有记录,无论您是否指定 WITH VALUES
或不。
插件如何使用默认约束:
如果您将记录插入 SomeTable
并做 不 指定 SomeCol
的价值,那么它将默认为 0
。
如果插入记录 和 指定 SomeCol
的价值 NULL
(并且您的列允许空值),
那么Default-Constraint会 不 使用和 NULL
将作为值插入。
笔记基于以下每个人的好评。
特别感谢:
@Yatrix,@ WalterStabosz,@ YahooSerious和@StackMan的评论。
ALTER TABLE Protocols
ADD ProtocolTypeID int NOT NULL DEFAULT(1)
GO
包含了 默认 填写列 现有 具有默认值的行,因此不违反NOT NULL约束。
添加时 可空栏目, WITH VALUES
将确保将特定的DEFAULT值应用于现有行:
ALTER TABLE table
ADD column BIT -- Demonstration with NULL-able column added
CONSTRAINT Constraint_name DEFAULT 0 WITH VALUES
ALTER TABLE <table name>
ADD <new column name> <data type> NOT NULL
GO
ALTER TABLE <table name>
ADD CONSTRAINT <constraint name> DEFAULT <default value> FOR <new column name>
GO
ALTER TABLE MYTABLE ADD MYNEWCOLUMN VARCHAR(200) DEFAULT 'SNUGGLES'
当你添加的列有一个时,请注意 NOT NULL
约束,但没有 DEFAULT
约束(值)。该 ALTER TABLE
如果表中有任何行,则该语句将失败。解决方案是删除 NOT NULL
来自新列的约束,或提供一个 DEFAULT
对它的约束。
最基本的版本只有两行
ALTER TABLE MyTable
ADD MyNewColumn INT NOT NULL DEFAULT 0