42

我一直试图理解该WITH VALUES声明的作用?

我似乎找不到任何可以正确解释它的文档。

ALTER TABLE Table1 
ADD newGuidId UniqueIdentifier NULL CONSTRAINT DF_Guid Default newid()
with values
4

3 回答 3

59

当您将具有默认约束的可空列添加到表中时,所有现有行都将获得以 aNULL作为其值的新列。定义的默认值将仅应用于插入的新行(如果它们的INSERT语句中没有该列的值)。

当您指定WITH VALUES时,所有现有行都将获得该定义的默认值,而不是NULL

如果您要添加到新表的列不可为空并且具有默认约束,则该默认值会自动应用于表中的所有现有行(不需要,WITH VALUES因为该列必须具有除 之外的值NULL

于 2013-09-08T06:41:06.800 回答
35

WITH VALUES将默认值应用于空字段

http://technet.microsoft.com/en-us/library/ms187742.aspx和一篇关于它的简短博客文章

于 2013-09-08T06:17:07.283 回答
0

WITH VALUES - 指定 DEFAULT constant_expression 中给出的值存储在添加到现有行的新列中。如果添加的列允许空值并且指定了 WITH VALUES,则默认值存储在新列中,并添加到现有行中。如果未为允许空值的列指定 WITH VALUES,则值 NULL 将存储在现有行的新列中。如果新列不允许空值,则无论是否指定 WITH VALUES,都将默认值存储在新行中。

于 2016-01-11T03:27:58.807 回答