SQL Server:带有ADD新列的ALTER

时间:2012-02-17 16:51:34

标签: sql sql-server alter-table

我在SQL Server中有以下语句:

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

这样做的目的是将任何新记录默认为0。

对于现有记录,我如何在声明中得到并说明默认为0。

我知道我可以去做更新,但无论如何要在上面的ALTER声明中进行更新吗?

2 个答案:

答案 0 :(得分:18)

使用WITH VALUES子句

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

虽然我同意另一个答案,但如果您将所有现有行设置为0并且将来的插入具有默认值,则该列应该可以为空,这似乎很奇怪。您是否需要在此处允许NULL作为列值?

答案 1 :(得分: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)