我正在尝试修改现有的列并添加一个整型列。添加整型列时,我将DEFAULT设置为10,但添加列时未设置default
ALTER TABLE dbo.Contacts ADD Col1 INT DEFAULT 10我需要做明确的更新脚本,以设置所有过去的记录作为默认值
而如果该列为'not null‘,则所有记录的缺省值均为10。
ALTER TABLE dbo.Contacts ADD Col2 INT NOT NULL DEFAULT 10为什么可以为空的列没有设置为默认值?在我的实际表中,我有将近850mil的记录,我的新列是可以为空的列,并且我正在努力避免在我的ALTER table脚本之后再次更新。方法是什么?
我正在考虑创建不能为空的列,默认值为10,并再次将约束更改为NULL。这是一个很好的方法吗?还有别的办法吗?
发布于 2016-09-28 04:58:38
您必须使用WITH VALUES来获取值,而不是null。在2016年使用WideWorldImporters:
ALTER TABLE sales.orders
ADD c1 INT DEFAULT 10 WITH VALUES
GO 发布于 2016-09-28 05:18:10
定义默认列值后,默认列值将应用于插入到表中的新行。要测试这一点,请尝试使用如下的INSERT命令。
INSERT INTO TableName col1 VALUES (col1_value)在此插入之后,对于插入的行,col2值应该获得默认值10。
但是,不会自动为表中的现有行分配新的缺省列值
https://stackoverflow.com/questions/39734102
复制相似问题