CREATE DEFAULT(Transact-SQL)
기본값 개체를 만듭니다. 열이나 별칭 데이터 형식에 기본값을 바인딩하면 삽입 시 값을 명시적으로 제공하지 않을 경우 개체가 바인딩된 열(별칭 데이터 형식의 경우 모든 열)에 값이 삽입되도록 지정됩니다.
중요 |
---|
Microsoft SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 응용 프로그램은 수정하십시오. 대신 ALTER TABLE 또는 CREATE TABLE의 DEFAULT 키워드를 사용하여 만든 기본 정의를 사용하십시오. |
구문
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에 오류 메시지가 나타납니다.
열에 바인딩된 기본값은 다음과 같은 경우 삽입됩니다.
값이 명시적으로 삽입되지 않은 경우
INSERT에 DEFAULT VALUES 또는 DEFAULT 키워드를 사용하여 기본값이 삽입된 경우
열을 만들 때 NOT NULL을 지정하고 기본값을 만들지 않은 경우 해당 열에 값을 입력하지 않으면 오류 메시지가 나타납니다. 다음 표에서는 NULL 또는 NOT NULL로 정의된 열과 기본값의 유무에 따른 관계를 표시합니다. 다음 표의 항목이 결과를 보여 줍니다.
열 정의 |
입력 안 함, 기본값 없음 |
입력 안 함, 기본값 있음 |
NULL 입력, 기본값 없음 |
NULL 입력, 기본값 있음 |
---|---|---|---|---|
NULL |
NULL |
기본값 |
NULL |
NULL |
NOT NULL |
오류 |
기본값 |
오류 |
오류 |
기본값의 이름을 바꾸려면 sp_rename을 사용합니다. 기본값에 대한 보고서를 보려면 sp_help를 사용합니다.
사용 권한
CREATE DEFAULT를 실행하려면 최소한 현재 데이터베이스에서 CREATE DEFAULT 권한과 기본값이 생성된 스키마에 대한 ALTER 권한이 필요합니다.
예
1.단순한 문자 기본값 만들기
다음 예에서는 unknown이라는 문자 기본값을 만듭니다.
USE AdventureWorks2012;
GO
CREATE DEFAULT phonedflt AS 'unknown';
2.기본값 바인딩
다음 예에서는 예 1에서 만든 기본값을 바인딩합니다. Contact 테이블의 Phone 열에 항목이 지정되어 있지 않을 때만 기본값이 적용됩니다. 항목을 생략하는 것은 INSERT 문에 명시적으로 NULL을 지정하는 것과는 다릅니다.
phonedflt라는 기본값은 없으므로 다음 Transact-SQL 문은 실패하게 됩니다. 이 예는 설명을 돕기 위해 제공된 것입니다.
USE AdventureWorks2012;
GO
sp_bindefault 'phonedflt', 'Person.PersonPhone.PhoneNumber';