改变 Table 'DEFAULT' 不设置默认值 - SQL 服务器
Alter Table 'DEFAULT' not setting default values - SQL Server
我正在尝试更改现有列并添加整数列。添加整数列时,我将 DEFAULT 设置为 10,但添加列时未设置默认值
ALTER TABLE dbo.Contacts ADD Col1 INT DEFAULT 10
我需要执行显式更新脚本以将所有过去的记录设置为默认值
而如果该列是 'not null',则所有记录都默认为 10。
ALTER TABLE dbo.Contacts ADD Col2 INT NOT NULL DEFAULT 10
为什么可为空的列没有设置默认值?在我的实际 table 中,我有将近 8.5 亿条记录,我的新列是可为空的列,我试图避免在我的 ALTER table 脚本之后再进行一次更新。路在何方?
我正在考虑创建默认值为 10 的不可空列,然后再次将约束更改为 NULL。这是好的方法吗?还有其他方法吗?
您必须使用 WITH VALUES 来获取值而不是空值。 2016 年使用 WideWorldImporters:
ALTER TABLE sales.orders
ADD c1 INT DEFAULT 10 WITH VALUES
GO
默认列值应用于定义默认列值后插入到 table 中的新行。要对此进行测试,请尝试这样的 INSERT 命令。
INSERT INTO TableName col1 VALUES (col1_value)
在此 INSERT 之后,插入行的 col2 值应获得默认值 10。
但是,table 中的现有行不会自动分配新的默认列值
我正在尝试更改现有列并添加整数列。添加整数列时,我将 DEFAULT 设置为 10,但添加列时未设置默认值
ALTER TABLE dbo.Contacts ADD Col1 INT DEFAULT 10
我需要执行显式更新脚本以将所有过去的记录设置为默认值
而如果该列是 'not null',则所有记录都默认为 10。
ALTER TABLE dbo.Contacts ADD Col2 INT NOT NULL DEFAULT 10
为什么可为空的列没有设置默认值?在我的实际 table 中,我有将近 8.5 亿条记录,我的新列是可为空的列,我试图避免在我的 ALTER table 脚本之后再进行一次更新。路在何方?
我正在考虑创建默认值为 10 的不可空列,然后再次将约束更改为 NULL。这是好的方法吗?还有其他方法吗?
您必须使用 WITH VALUES 来获取值而不是空值。 2016 年使用 WideWorldImporters:
ALTER TABLE sales.orders
ADD c1 INT DEFAULT 10 WITH VALUES
GO
默认列值应用于定义默认列值后插入到 table 中的新行。要对此进行测试,请尝试这样的 INSERT 命令。
INSERT INTO TableName col1 VALUES (col1_value)
在此 INSERT 之后,插入行的 col2 值应获得默认值 10。
但是,table 中的现有行不会自动分配新的默认列值