改变表格' DEFAULT'不设置默认值 - SQL Server

时间:2016-09-27 20:51:28

标签: sql-server sql-server-2012 sql-server-2016

我正在尝试更改现有列并添加整数列。在添加整数列时,我将DEFAULT设置为10,但在添加列

时默认不设置
ALTER TABLE dbo.Contacts ADD Col1 INT DEFAULT 10

我需要使用显式更新脚本将所有过去的记录设置为默认值

而如果列不是空的'所有记录的默认值为10。

ALTER TABLE dbo.Contacts ADD Col2 INT NOT NULL DEFAULT 10

为什么可空列未设置为默认值?在我的实际表中,我有接近850 mil的记录,我的新列是可以为空的列,我试图避免在我的ALTER表脚本之后再进行一次更新。是什么方式?

我正在考虑创建不可为空的列,默认为10,并再次将约束更改为NULL。这是好方法吗?还有其他方法吗?

2 个答案:

答案 0 :(得分:3)

您必须使用WITH VALUES来获取值而不是null。 2016年使用WideWorldImporters:

ALTER TABLE sales.orders 
ADD c1 INT DEFAULT 10 WITH VALUES
GO 

答案 1 :(得分:0)

默认列值应用于在定义默认列值后插入表中的新行。要测试它,请尝试这样的INSERT命令。

INSERT INTO TableName col1 VALUES (col1_value)

在此INSERT之后,col2值应为插入的行获得默认值10。

但是,表中的现有行不会自动分配新的默认列值