我正在进行数据库基础课程,后评估中的一个问题是:
必须为NOT NULL行设置默认值。 TRUE | FALSE
我被引导相信答案是真的,因为我回答错误而且这是错误的,问题是我不明白为什么这是真的。
如果问题是:
使用ALTER TABLE添加新列时,必须为NOT NULL列设置默认值。
然后我知道这是真的,理解为什么。我误解了这个问题,还是我在其他地方误解了什么?
任何帮助将不胜感激。 李。
答案 0 :(得分:2)
你是对的。声明<column_definition> ::=
column_name <data_type>
. . .
[ CONSTRAINT constraint_name [ DEFAULT constant_expression ] ]
. . .
[ NULL | NOT NULL ]
列时,不需要默认定义。如果你看一下syntax diagram for create table
:
<column_definition> ::= column_name <data_type> . . . [ CONSTRAINT constraint_name [ DEFAULT constant_expression ] ] . . . [ NULL | NOT NULL [CONSTRAINT constraint_name] DEFAULT constant_expression ]
如果需要的语法,它看起来更像是这样:
not null
我甚至不确定insert
列的默认定义是个好主意。在许多情况下,您希望DEFAULT
失败而不是插入一些人为值。
唯一的关系是altering tables有数据的时候:
如果新列不允许空值而表格不允许 为空,必须在新列中添加
NULL
定义,并且 新列自动加载新的默认值 每个现有行中的列。
这很明显。新列的现有行将被赋予NOT NULL
值 - 但DEFAULT
约束不允许这样做,因此需要{{1}}。