Udostępnij za pośrednictwem


ZESTAW ANSI_NULL_DFLT_OFF (Transact-SQL)

Zmienia zachowanie sesja , aby zastąpić domyślne opcje dopuszczania wartości null nowe kolumny po ANSI null default opcja dla bazy danych jest true.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_OFF { 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.Domyślnie, gdy ustawienie ANSI_NULL_DFLT_OFF jest włączone, nowe kolumny, które zostały utworzone przy użyciu instrukcji ALTER TABLE i CREATE TABLE są zero, jeśli nie jest jawnie określony stan opcje dopuszczania wartości null kolumna .Ustaw ANSI_NULL_DFLT_OFF nie ma wpływu na kolumny, które są tworzone 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 USTAWIĆ można 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 zawsze określić wartość NULL lub NOT NULL w instrukcji ALTER TABLE i CREATE TABLE.

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

Uprawnienia

Wymaga członkostwa w public rolę.

Przykłady

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

USE AdventureWorks2008R2;
GO

-- Set the 'ANSI null default' database option to true by executing 
-- ALTER DATABASE.
GO
ALTER DATABASE AdventureWorks2008R2 SET ANSI_NULL_DEFAULT ON;
GO
-- Create table t1.
CREATE TABLE t1 (a TINYINT);
GO
-- NULL INSERT should succeed.
INSERT INTO t1 (a) VALUES (NULL);
GO

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

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

-- This illustrates the effect of having both the database
-- option and SET option disabled.
-- Set the 'ANSI null default' database option to false.
ALTER DATABASE AdventureWorks2008R2 SET ANSI_NULL_DEFAULT OFF;
GO
-- Create table t4.
CREATE TABLE t4 (a tinyint) ;
GO 
-- NULL INSERT should fail.
INSERT INTO t4 (a) VALUES (null);
GO

-- SET ANSI_NULL_DFLT_OFF to ON and create table t5.
SET ANSI_NULL_DFLT_OFF ON;
GO
CREATE TABLE t5 (a tinyint);
GO 
-- NULL insert should fail.
INSERT INTO t5 (a) VALUES (null);
GO

-- SET ANSI_NULL_DFLT_OFF to OFF and create table t6.
SET ANSI_NULL_DFLT_OFF OFF;
GO
CREATE TABLE t6 (a tinyint); 
GO 
-- NULL insert should fail.
INSERT INTO t6 (a) VALUES (null);
GO

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