我正在尝试更改现有列并添加整数列。在添加整数列时,我将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。这是好方法吗?还有其他方法吗?
答案 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。
但是,表中的现有行不会自动分配新的默认列值