【问题标题】:Sql Server 2008 R2 table columns and default valuesSql Server 2008 R2 表列和默认值
【发布时间】:2013-08-29 00:22:42
【问题描述】:

表的列中的默认值有什么意义? 根据http://technet.microsoft.com/en-us/library/ms187872.aspx

您可以指定将在列中输入的默认值 SQL Server 2012 使用 SQL Server Management Studio 或 Transact-SQL。 如果您未分配默认值并且用户离开该列 空白,然后:

  • 如果您将选项设置为允许空值,则会将 NULL 插入列中。
  • 如果您不设置允许空值的选项,该列将保持空白,但用户将无法保存该行,直到他们 为列提供一个值。

我不明白!如果您确实不允许在列上使用空值,那么如果用户未提供,则它应该在该列中插入默认值。 那为什么不呢?

【问题讨论】:

  • 您的问题是默认值有什么意义,或者您尝试使用它们是不成功的?
  • 正如您的声明所说-仅当您未指定默认值时才适用-您的观点到底是什么?如果未指定,则无法插入默认值。
  • 好吧,如果您确实在不允许空值的列上提供了默认值,那么将该列留空,它将不会插入默认值。
  • @Paul 是的,它会的。你在哪里读的?
  • @Lamak 你的权利!

标签: sql-server


【解决方案1】:

您一定错过了文档的一部分。

您可以指定将在列中输入的默认值 SQL Server 2012 使用 SQL Server Management Studio 或 Transact-SQL。 如果您没有指定默认值并且用户离开了该列 空白,:如果您将选项设置为允许空值,NULL 将是 插入列中。如果没有设置允许 null 的选项 值,该列将保持空白,但用户将无法 保存该行,直到它们为该列提供一个值。

因此,如果您确实分配了默认值,那么当用户将该列留空时,它将用作分配。

“有点奇怪的事情”是文档首先解释了如果您不使用 DEFAULT 会发生什么(这可能不是您正在等待的:您想知道当您用它)。在我第一次“太快”阅读时也感到困惑。

【讨论】:

  • 该文档首先解释了如果您使用 DEFAULT 会发生什么:“您可以指定将在 SQL Server 2012 的列中输入的默认值” 但在一行中,如果你不这样做,会有更多的解释:)
  • @ypercube 好吧,是的,但它部分错误......它至少应该是这样的“您可以指定将在 Sql Server 2012 的列中输入的默认值 如果您将该列留空"