다음을 통해 공유


CREATE DEFAULT(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceMicrosoft Fabric의 SQL 데이터베이스

기본값 개체를 만듭니다. 열이나 별칭 데이터 형식에 기본값을 바인딩하면 삽입 시 값을 명시적으로 제공하지 않을 경우 개체가 바인딩된 열(별칭 데이터 형식의 경우 모든 열)에 값이 삽입되도록 지정됩니다.

Important

SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 애플리케이션은 수정하세요. 대신 키워드 DEFAULT 또는 ALTER TABLE.를 사용하여 CREATE TABLE 만든 기본 정의를 사용합니다.

Transact-SQL 구문 표기 규칙

구문

CREATE DEFAULT [ schema_name . ] default_name
AS constant_expression [ ; ]

인수

schema_name

기본값이 속한 스키마의 이름입니다.

default_name

기본값의 이름입니다. 기본값 이름은 식별자에 대한 규칙을 따라야 합니다. 기본 소유자 이름을 지정하는 것은 선택 사항입니다.

constant_expression

상수 값만 포함하는 입니다. 열 이름이나 다른 데이터베이스 개체의 이름을 포함할 수 없습니다. 별칭 데이터 형식을 포함한 식을 제외하고 모든 종류의 상수, 기본 제공 함수 및 수치 연산 식을 사용할 수 있습니다. 사용자 정의 함수는 사용할 수 없습니다. 문자와 날짜 상수는 작은따옴표(')로 묶습니다. 통화, 정수 및 부동 소수점 상수에는 따옴표가 필요하지 않습니다. 이진 데이터 앞에 0x는 통화 데이터 앞에 달러 기호($)가 와야 합니다. 기본값은 열 데이터 형식과 호환이 가능해야 합니다.

설명

현재 데이터베이스에서는 기본 이름만 만들 수 있습니다. 기본값 이름은 데이터베이스에서 스키마별로 고유해야 합니다. 기본값을 만들 때 열 또는 별칭 데이터 형식에 바인딩하는 데 사용합니다 sp_bindefault .

기본값이 바인딩될 열과 호환되지 않으면 기본값을 삽입하려고 할 때 SQL Server에 오류 메시지가 나타납니다. 예를 들어 N/A는 numeric 열의 기본값으로 사용할 수 없습니다.

기본값이 바인딩될 열에 비해 너무 길면 값이 잘립니다.

CREATE DEFAULT 문은 단일 일괄 처리에서 다른 Transact-SQL 문과 결합할 수 없습니다.

같은 이름을 가진 기본값을 새로 만들려면 먼저 기존 기본값을 삭제해야 합니다. 또한 기본값은 삭제되기 전에 실행하여 sp_unbindefault 바인딩 해제해야 합니다.

열에 기본값 및 연관된 규칙이 모두 있을 경우에는 해당 기본값이 규칙을 위반해서는 안 됩니다. 규칙을 위반하는 기본값은 삽입할 수 없으며 이러한 기본값을 삽입하려고 하면 SQL Server에 오류 메시지가 나타납니다.

열에 바인딩된 기본값은 다음과 같은 경우 삽입됩니다.

  • 값이 명시적으로 삽입되지 않은 경우
  • DEFAULT VALUES 키워드 또는 DEFAULT 키워드를 사용하여 INSERT 기본값을 삽입합니다.

열을 만들 때 지정 NOT NULL 하고 기본값을 만들지 않으면 사용자가 해당 열에 항목을 만들지 못할 때 오류 메시지가 생성됩니다. 다음 표에서는 기본값의 존재와 열의 정의(as NULL 또는 as) NOT NULL사이의 관계를 보여 줍니다. 다음 표의 항목이 결과를 보여 줍니다.

열 정의 입력 안 함, 기본값 없음 입력 안 함, 기본값 있음 Enter, NULL기본값 없음 입력 NULL, 기본 상태
NULL NULL Default NULL NULL
NOT NULL 오류 Default 오류 오류

기본값의 이름을 바꾸려면 기본값 sp_rename 에 대한 보고서 사용을 사용합니다 sp_help.

사용 권한

사용CREATE DEFAULT하려면 최소한 사용자에게 현재 데이터베이스에 대한 사용 권한과 CREATE DEFAULT 기본값이 만들어지는 스키마에 대한 권한이 있어야 합니다ALTER.

예제

A. 기본 문자 기본값 만들기

다음 예에서는 unknown이라는 문자 기본값을 만듭니다.

USE AdventureWorks2022;
GO

CREATE DEFAULT phonedflt
    AS 'unknown';

B. 기본값 바인딩

다음 예에서는 예 1에서 만든 기본값을 바인딩합니다. Phone 테이블의 Contact 열에 항목이 지정되어 있지 않을 때만 기본값이 적용됩니다.

참고

항목을 생략하는 것은 문에 명시적으로 진술하는 경우 NULLINSERT 다릅니다.

phonedflt라는 기본값은 없으므로 다음 Transact-SQL 문은 실패하게 됩니다. 이 예는 설명을 돕기 위해 제공된 것입니다.

USE AdventureWorks2022;
GO

EXECUTE sp_bindefault 'phonedflt', 'Person.PersonPhone.PhoneNumber';