SQL Server:了解默认值
我正在学习数据库基础课程,后评估中的一个问题是: 必须为非空行设置默认值。对|错 我被引导去相信答案是正确的,因为我的回答是错误的,而它是错误的,问题是我不明白为什么它是正确的 如果问题是: 使用ALTER TABLE添加新列时,必须为NOTNULL列设置默认值 然后我知道这是真的,并理解为什么。我是误读了这个问题还是误解了别的什么 任何帮助都将不胜感激。SQL Server:了解默认值,sql,sql-server,Sql,Sql Server,我正在学习数据库基础课程,后评估中的一个问题是: 必须为非空行设置默认值。对|错 我被引导去相信答案是正确的,因为我的回答是错误的,而它是错误的,问题是我不明白为什么它是正确的 如果问题是: 使用ALTER TABLE添加新列时,必须为NOTNULL列设置默认值 然后我知道这是真的,并理解为什么。我是误读了这个问题还是误解了别的什么 任何帮助都将不胜感激。 李。你是对的。当列声明为非空时,不需要默认定义。如果您查看以下内容,这一点非常明显: := 列名 . . . [约束\u名称[默认常量\u
李。你是对的。当列声明为
非空时,不需要默认定义。如果您查看以下内容,这一点非常明显:
:=
列名
. . .
[约束\u名称[默认常量\u表达式]]
. . .
[NULL |非NULL]
如果语法是必需的,它看起来更像这样:
:=
列名
. . .
[约束\u名称[默认常量\u表达式]]
. . .
[NULL | notnull[CONSTRAINT _name]默认常量_表达式]
我甚至不确定默认定义是否适合notnull
列。在许多情况下,您希望插入失败,而不是插入一些人为的值
唯一的关系是当有数据时:
如果新列不允许空值,并且表不允许空值
空,则必须在新列中添加默认定义,并且
新列将自动加载,并使用新列中的默认值
每个现有行中的列
这是相当明显的。现有行将为新列指定一个NULL
值,但NOT NULL
约束不允许这样做,因此需要默认值。默认值意味着当值为NULL时,它将采用所插入的默认值,因此将列设置为非NULL是否正确?我认为您是对的,让我们想象一下,我们有一张桌子,上面有待售的存货。什么可以设置为非空列价格的默认值?谢谢回复。假设我们有一个firstName和lastName列,这两个列都不是空的,那么默认值是多少?您肯定会让服务器响应所需的值吗?有时您会在代码中看到bug,有时问题中会出现bug;)我很确定你是对的。是的,这个问题根本没有意义,什么是非空行?非常感谢你的解释。我给设置问题的人发了电子邮件,他们现在把问题从一行改到另一列,并更正了答案。李
<column_definition> ::=
column_name <data_type>
. . .
[ CONSTRAINT constraint_name [ DEFAULT constant_expression ] ]
. . .
[ NULL | NOT NULL ]
<column_definition> ::=
column_name <data_type>
. . .
[ CONSTRAINT constraint_name [ DEFAULT constant_expression ] ]
. . .
[ NULL | NOT NULL [CONSTRAINT constraint_name] DEFAULT constant_expression ]