Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server:了解默认值_Sql_Sql Server - Fatal编程技术网

SQL Server:了解默认值

SQL Server:了解默认值,sql,sql-server,Sql,Sql Server,我正在学习数据库基础课程,后评估中的一个问题是: 必须为非空行设置默认值。对|错 我被引导去相信答案是正确的,因为我的回答是错误的,而它是错误的,问题是我不明白为什么它是正确的 如果问题是: 使用ALTER TABLE添加新列时,必须为NOTNULL列设置默认值 然后我知道这是真的,并理解为什么。我是误读了这个问题还是误解了别的什么 任何帮助都将不胜感激。 李。你是对的。当列声明为非空时,不需要默认定义。如果您查看以下内容,这一点非常明显: := 列名 . . . [约束\u名称[默认常量\u

我正在学习数据库基础课程,后评估中的一个问题是:

必须为非空行设置默认值。对|错

我被引导去相信答案是正确的,因为我的回答是错误的,而它是错误的,问题是我不明白为什么它是正确的

如果问题是:

使用ALTER TABLE添加新列时,必须为NOTNULL列设置默认值

然后我知道这是真的,并理解为什么。我是误读了这个问题还是误解了别的什么

任何帮助都将不胜感激。
李。

你是对的。当列声明为
非空时,不需要默认定义。如果您查看以下内容,这一点非常明显:

:=
列名
. . . 
[约束\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 ]