ZESTAW ANSI_NULL_DFLT_ON (Transact-SQL)

Modyfikuje zachowanie sesja , aby zastąpić domyślne opcje dopuszczania wartości null nowe kolumny po ANSI null default opcja dla bazy danych jest false.Aby uzyskać więcej informacji dotyczących ustawiania wartości dla ANSI null default, zobacz ALTER DATABASE (Transact-SQL) i Ustawianie opcji bazy danych.

Ikona łącza do tematuJęzyka Transact-SQL składni konwencje

Składnia

SET ANSI_NULL_DFLT_ON {ON | OFF}

Uwagi

To ustawienie dotyczy tylko opcje dopuszczania wartości null nowych kolumn podczas opcje dopuszczania wartości null kolumna nie jest określona w instrukcji CREATE TABLE i ALTER TABLE.Gdy ustawienie ANSI_NULL_DFLT_ON jest włączone, nowe kolumny utworzone przy użyciu instrukcji ALTER TABLE i CREATE TABLE zezwolić na wartości null , jeśli stan opcje dopuszczania wartości null kolumna nie jest jawnie określony.Ustaw ANSI_NULL_DFLT_ON nie ma wpływu na łamy utworzone za pomocą jawnego NULL lub NOT NULL.

Ustaw ANSI_NULL_DFLT_OFF i ustaw ANSI_NULL_DFLT_ON nie może być zestaw na tym samym czas.Jeśli jedną z opcji jest zestaw na, innych opcji jest zestaw .W związku z tym ANSI_NULL_DFLT_OFF lub ANSI_NULL_DFLT_ON może być zestaw na lub oba należy zestaw .Jedną z tych opcji jest włączone, ustawienie (zestaw ANSI_NULL_DFLT_OFF lub ANSI_NULL_DFLT_ON USTAWIĆ) staje się skuteczne.Jeśli obie opcje są zestaw , SQL Server używa wartości is_ansi_null_default_on kolumna w sys.databases katalogu widoku.

Dla bardziej niezawodne działanie Transact-SQL skrypty, które są używane w bazach danych z ustawieniami innym opcje dopuszczania wartości null , lepiej jest określić wartość NULL lub NOT NULL w instrukcji ALTER TABLE i CREATE TABLE.

SQL Server Sterownika ODBC macierzystym klienta i SQL Server macierzystego klienta OLE DB Provider for SQL Server automatycznie zestaw ANSI_NULL_DFLT_ON on podczas łączenia.Domyślne ustawienie ANSI_NULL_DFLT_ON jest wyłączona dla połączeń z DB— aplikacje biblioteczne.

Gdy ustawienie ANSI_DEFAULTS jest włączone, ustawienie ANSI_NULL_DFLT_ON jest włączone.

Ustawienie ustawianie ANSI_NULL_DFLT_ON jest zestaw na wykonać lub czas jednostkowy i nie analizować czas.

Ustawienie zestaw ANSI_NULL_DFLT_ON nie stosuje się na tabele są tworzone za pomocą SELECT INTO instrukcja.

Uprawnienia

Wymaga członkostwa w public rolę.

Przykłady

Poniższy przykład ilustruje skutki SET ANSI_NULL_DFLT_ON z oba ustawienia dla ANSI null default opcji bazy danych.

USE AdventureWorks2008R2;
GO

-- The code from this point on demonstrates that SET ANSI_NULL_DFLT_ON
-- has an effect when the 'ANSI null default' for the database is false.
-- Set the 'ANSI null default' database option to false by executing
-- ALTER DATABASE.
ALTER DATABASE AdventureWorks2008R2 SET ANSI_NULL_DEFAULT OFF;
GO
-- Create table t1.
CREATE TABLE t1 (a TINYINT) ;
GO 
-- NULL INSERT should fail.
INSERT INTO t1 (a) VALUES (NULL);
GO

-- SET ANSI_NULL_DFLT_ON to ON and create table t2.
SET ANSI_NULL_DFLT_ON ON;
GO
CREATE TABLE t2 (a TINYINT);
GO 
-- NULL insert should succeed.
INSERT INTO t2 (a) VALUES (NULL);
GO

-- SET ANSI_NULL_DFLT_ON to OFF and create table t3.
SET ANSI_NULL_DFLT_ON OFF;
GO
CREATE TABLE t3 (a TINYINT);
GO
-- NULL insert should fail.
INSERT INTO t3 (a) VALUES (NULL);
GO

-- The code from this point on demonstrates that SET ANSI_NULL_DFLT_ON 
-- has no effect when the 'ANSI null default' for the database is true.
-- Set the 'ANSI null default' database option to true.
ALTER DATABASE AdventureWorks2008R2 SET ANSI_NULL_DEFAULT ON
GO

-- Create table t4.
CREATE TABLE t4 (a TINYINT);
GO 
-- NULL INSERT should succeed.
INSERT INTO t4 (a) VALUES (NULL);
GO

-- SET ANSI_NULL_DFLT_ON to ON and create table t5.
SET ANSI_NULL_DFLT_ON ON;
GO
CREATE TABLE t5 (a TINYINT);
GO 
-- NULL INSERT should succeed.
INSERT INTO t5 (a) VALUES (NULL);
GO

-- SET ANSI_NULL_DFLT_ON to OFF and create table t6.
SET ANSI_NULL_DFLT_ON OFF;
GO
CREATE TABLE t6 (a TINYINT);
GO 
-- NULL INSERT should succeed.
INSERT INTO t6 (a) VALUES (NULL);
GO

-- Set the 'ANSI null default' database option to false.
ALTER DATABASE AdventureWorks2008R2 SET ANSI_NULL_DEFAULT ON;
GO

-- Drop tables t1 through t6.
DROP TABLE t1;
DROP TABLE t2;
DROP TABLE t3;
DROP TABLE t4;
DROP TABLE t5;
DROP TABLE t6;