【问题标题】:What is syntax to specify SQL Server column default value?指定 SQL Server 列默认值的语法是什么?
【发布时间】:2018-10-09 20:53:20
【问题描述】:

使用 SQL Server 2012 和 Visual Studio 2012。

使用 VS 2012 IDE 表设计器,我添加了一个默认值,系统生成了这个:

ALTER TABLE [dbo].[tVEHICLES]
    ADD [DT_ACTIVE_EVENT] DATE DEFAULT (('1980-01-01')) NULL;

Q1:我的主要问题是为什么会有双括号“((value))”?

Q2:语法是否需要双括号?

Q3:...DEFAULT '1980-01-01' NULL; 怎么样?

提前谢谢...约翰

【问题讨论】:

  • 另外,问“关于什么”真的不清楚。但如果你的意思是 NULL,它就像往常一样,它允许空值。
  • 谢谢大家的回复。因此,我提出了一个我找不到任何记录语法的问题,并在此处询问了 VS-2012 生成的语句中的括号是什么,这有两个缺点。回复声明不需要括号,但没有人说“为什么”使用双括号以及双括号的目的是什么。我不想开始评论辩论。我只是在寻找我的 Q 的答案。关于什么...它显示没有任何括号的默认值 - 没有关于 NULL 的问题。对不起,我这么愚蠢,好吗伙计们?

标签: sql sql-server visual-studio visual-studio-2012 sql-server-2012


【解决方案1】:

问问题真的比尝试代码更容易吗?

括号不是必需的。 Here 是一个 SQL Fiddle。

注意它的行为方式:

  • 如果您没有在insert 中包含该列(或显式插入默认值),您将获得默认值。
  • 您仍然可以在列中插入NULL

通常,具有默认值的列具有NOT NULL 约束。

【讨论】:

  • 感谢您的回复和您宝贵的行为回复。在这种情况下,01-01-1980 表示允许作为历史日期的最早日期。请阅读我上面的评论。感谢您提供小提琴链接,但我不知道如何自己开始小​​提琴。
猜你喜欢
  • 2014-08-18
  • 2020-12-11
  • 1970-01-01
  • 2011-04-22
  • 2014-10-24
  • 1970-01-01
  • 1970-01-01
  • 2017-10-28
  • 2015-01-08
相关资源
最近更新 更多