如果我在 Sql 中设置一个带有类似Default
约束的记录
[Publicbit] BIT DEFAULT ((0)),
我需要设置NULL/NOTNULL
约束吗?
编辑:我使用的是布尔值,但请将您的答案扩展到其他数据类型。
如果我在 Sql 中设置一个带有类似Default
约束的记录
[Publicbit] BIT DEFAULT ((0)),
我需要设置NULL/NOTNULL
约束吗?
编辑:我使用的是布尔值,但请将您的答案扩展到其他数据类型。
您永远不需要Null 约束,但默认值不会保护您的表免受显式 NULL 的影响。因此,如果要强制执行此条件,则应使用 NOT NULL 约束。
use tempdb
go
CREATE TABLE example
(
id BIT DEFAULT (0)
)
INSERT example (id) VALUES (null)
SELECT * FROM example
不,它们是可选的。
列名 ... [空| 非空]
当您NULL
的选择是0/1
.
您应该指定 NOT NULL,以防止 NULL 进入此记录。听起来您想要的唯一有效值是 0 和 1。如果有人(或将来的您)编写了一条记录(或代码),并为此列传递了 NULL,那么除非您指定 NOT NULL,否则它将被允许。
通过指定 DEFAULT,仅当 SQL INSERT 语句不包含该列时,您才可以防止出现 NULL 值。