2016-02-15 1 views
1

Я использую AWS RDS Microsoft SQL Server 2014 - 12.0.4422.0 (X64).
Пытается создать тестовый стол.Как установить столбец таблицы по умолчанию как nullable

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] 

Так может возникнуть вопрос в том, как заставить SLQ установить любой столбец NULLABLE если столбец не задан, как 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.

Смежные вопросы