SET ANSI_NULL_DFLT_ON(Transact-SQL)

데이터베이스의 ANSI Null 기본값 옵션이 false로 설정되어 있으면 세션의 동작을 수정하여 새 열의 기본 Null 허용 여부보다 우선 적용됩니다. ANSI Null 기본값 설정 방법은 ALTER DATABASE(Transact-SQL)데이터베이스 옵션 설정을 참조하십시오.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

SET ANSI_NULL_DFLT_ON {ON | OFF}

주의

이 설정은 CREATE TABLE과 ALTER TABLE 문에 열의 Null 허용이 지정되어 있지 않을 때 새 열의 Null 허용에만 영향을 줍니다. SET ANSI_NULL_DFLT_ON을 ON으로 설정하면 열의 Null 허용 여부 상태가 명시적으로 지정되지 않은 경우 ALTER TABLE과 CREATE TABLE 문을 사용해 만든 새 열에 Null 값을 사용할 수 있습니다. SET ANSI_NULL_DFLT_ON은 NULL 또는 NOT NULL을 명시적으로 지정하여 만든 열에 영향을 주지 않습니다.

SET ANSI_NULL_DFLT_OFF와 SET ANSI_NULL_DFLT_ON을 동시에 ON으로 설정할 수 없습니다. 둘 중 하나를 ON으로 설정하면 다른 옵션은 OFF로 설정됩니다. 따라서 ANSI_NULL_DFLT_OFF와 ANSI_NULL_DFLT_ON 중 하나만 ON으로 설정하거나 둘 다 OFF로 설정할 수 있습니다. 두 옵션 중 하나를 ON으로 설정하면 이 설정(SET ANSI_NULL_DFLT_OFF 또는 SET ANSI_NULL_DFLT_ON)이 적용됩니다. 두 옵션을 모두 OFF로 설정하면 SQL Server 2005 가 sys.databases 카탈로그 뷰에 있는 is_ansi_null_default_on 열의 값을 사용합니다.

Null 허용 여부 설정이 서로 다른 데이터베이스에서 사용되는 Transact-SQL 스크립트로 가장 안정적으로 작업하려면 CREATE TABLE과 ALTER TABLE 문에서 NULL 또는 NOT NULL을 지정하는 것이 좋습니다.

SQL Server 의 SQL 네이티브 클라이언트 ODBC 드라이버와 SQL 네이티브 클라이언트 OLE DB 공급자는 연결될 때 ANSI_NULL_DFLT_ON을 자동으로 ON으로 설정합니다. DB-Library 응용 프로그램에서 연결하는 경우 SET ANSI_NULL_DFLT_ON의 기본값은 OFF입니다.

SET ANSI_DEFAULTS를 ON으로 설정하면 SET ANSI_NULL_DFLT_ON 옵션이 설정됩니다.

SET ANSI_NULL_DFLT_ON은 실행 시간이나 런타임에 설정되며 구문 분석 시간에는 설정되지 않습니다.

사용 권한

public 역할의 멤버 자격이 필요합니다.

다음 예에서는 ANSI Null 기본값 데이터베이스 옵션에 대해 SET ANSI_NULL_DFLT_ON을 두 가지 값으로 설정했을 때의 결과를 보여 줍니다.

USE AdventureWorks;
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 AdventureWorks 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 AdventureWorks 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 AdventureWorks 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

참고 항목

참조

ALTER TABLE(Transact-SQL)
CREATE TABLE(Transact-SQL)
SET(Transact-SQL)
SET ANSI_DEFAULTS(Transact-SQL)
SET ANSI_NULL_DFLT_OFF(Transact-SQL)

도움말 및 정보

SQL Server 2005 지원 받기