默认值的 DROP 约束是否为数据操作的大小



如果我有一个表格,里面有一些值,我 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时间使用 - 它不会以不同的方式处理默认值,也不会尝试通过在整个表中仅存储值的一个实例来优化存储。

相反,仅

删除约束是仅元数据操作,因为它不会更改行中已存储的现有值。

最新更新