SQL Server: ALTER语句添加新列

9

我在SQL Server中有以下语句:

ALTER TABLE [dbo].[TruckTbl] 
ADD [TruckState] [bit] NULL DEFAULT 0;

这将默认任何新记录为0。

对于现有记录,我该如何在语句中获取并将其默认为0。

我知道我可以进行更新,但有没有办法在上面的 ALTER 语句中进行更新?


你的BIT字段是否真的需要可空?这基本上使它成为三态而不是二态。如果该字段不允许为空,所有先前的记录将接收您指定的默认值! - Jamiec
2个回答

19

使用 WITH VALUES 子句。

 ALTER TABLE [dbo].[TruckTbl] ADD [TruckState] [bit] NULL DEFAULT 0 WITH VALUES;

虽然我同意其他回答,但如果您将所有现有行设置为0并为将来插入设置了默认值,那么该列根本不应该可空。您是否需要在此处允许NULL作为列值?


2
很酷,从来不知道那个存在。 - Jamiec
唯一的问题是它会在你的表中创建一个额外的约束。如果你不想要这个额外的约束,你需要手动删除它,但是在删除时要小心,因为SQL Server Management Studio会使用随机名称创建这个约束。 - Hugo Medina

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

E.g

ALTER TABLE Temp
ADD ID int NOT NULL DEFAULT(1)

1
这很简单。谢谢。 - Dr Deo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接