2016-02-15 145 views
1

我正在使用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) 

我預計sIS_NULLABLE = yes因爲not null沒有明確設置。
所以現在設置s爲可爲空的唯一辦法,我必須使用

create table t1(id int not null, s varchar null) on [primary] 

,可能的問題是如何強制SLQ設置任何列可空,如果沒有列設置爲NOT NULL明確?

回答

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選項。

相關問題