如果我有一个表格,里面有一些值,我 ALTER TABLE [table_name] ADD [column_name] BIGINT NOT NULL CONSTRAINT [default_constraint] DEFAULT (1)
.这不会是数据操作的大小,因为默认值将存储一次,并在新列的每个现有行中引用。
但是,如果我以后决定放弃[default_constraint]
怎么办?这会成为数据操作的规模吗?
ALTER TABLE [table_name] ADD [column_name] BIGINT NOT NULL CONSTRAINT [default_constraint] DEFAULT (1)
.这不会是数据操作的大小,因为默认值将存储一次,并在新列的每个现有行中引用。
这是不正确的。SQL Server 必须更改每个现有行,并在每行中物理存储默认值的副本。当表具有默认约束时(在添加它的任何操作之后(,该约束仅在INSERT
时间使用 - 它不会以不同的方式处理默认值,也不会尝试通过在整个表中仅存储值的一个实例来优化存储。
删除约束是仅元数据操作,因为它不会更改行中已存储的现有值。