我正在使用AWS RDS Microsoft SQL Server 2014 - 12.0.4422.0(X64) 试图创建测试表。
create table t1(id int not null, s varchar) on [primary]
但s
列不可归零。
SELECT COLUMN_NAME, IS_NULLABLE FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = 't1'
COLUMN_NAME IS_NULLABLE
id NO
s NO
(2 rows affected)
我预计s
将为IS_NULLABLE = yes
,因为not null
未明确设置。
所以现在唯一一种将s
设置为NULLABLE的方法我必须使用
create table t1(id int not null, s varchar null) on [primary]
所以可能有问题是如果没有明确地将列设置为NOT NULL,如何强制SLQ将任何列设置为NULLABLE?
答案 0 :(得分:1)
这可以通过使用SET ANSI_NULL_DFLT_ON
tsql命令来实现:
SET ANSI_NULL_DFLT_ON ON;
GO
create table t1(id int not null, s varchar) on [primary]
GO
-- NULL insert should succeed.
INSERT INTO t1 (id, s) VALUES (1, NULL);
请注意,要使其正常工作,SET ANSI_DEFAULTS
应设置为关闭。
就我个人而言,我认为无论如何都不会信任默认行为,因为您永远不知道您团队的其他成员是否已更改过它。
因此,我建议为所有内容设置显式值,包括NULL / NOT NULL
选项。