我在SQL Server中有以下语句:
ALTER TABLE [dbo].[TruckTbl]
ADD [TruckState] [bit] NULL DEFAULT 0;
这样做的目的是将任何新记录默认为0。
对于现有记录,我如何在声明中得到并说明默认为0。
我知道我可以去做更新,但无论如何要在上面的ALTER
声明中进行更新吗?
答案 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)