5

如果我在 Sql 中设置一个带有类似Default约束的记录

[Publicbit]   BIT             DEFAULT ((0)),

我需要设置NULL/NOTNULL约束吗?

编辑:我使用的是布尔值,但请将您的答案扩展到其他数据类型。

4

4 回答 4

3

您永远不需要Null 约束,但默认值不会保护您的表免受显式 NULL 的影响。因此,如果要强制执行此条件,则应使用 NOT NULL 约束。

use tempdb
go
CREATE TABLE example
(
    id BIT DEFAULT (0)
)

INSERT example (id) VALUES (null)

SELECT * FROM example
于 2013-08-28T17:30:25.923 回答
2

不,它们是可选的。

列名
    ...
    [空| 非空]

当您NULL的选择是0/1.

于 2013-08-28T17:26:12.753 回答
2

您应该指定 NOT NULL,以防止 NULL 进入此记录。听起来您想要的唯一有效值是 0 和 1。如果有人(或将来的您)编写了一条记录(或代码),并为此列传递了 NULL,那么除非您指定 NOT NULL,否则它将被允许。

通过指定 DEFAULT,仅当 SQL INSERT 语句不包含该列时,您才可以防止出现 NULL 值。

于 2013-08-28T17:29:39.570 回答
1

这些只是可选的。您是否要指定它取决于您

来自MSDN

确定列中是否允许空值。NULL 不是严格的约束,但可以像 NOT NULL 一样指定。

于 2013-08-28T17:26:49.440 回答