sp_bindefault(Transact-SQL)

열 또는 별칭 데이터 형식에 기본값을 바인딩합니다.

중요 정보중요

Microsoft SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 말고, 현재 이 기능을 사용하는 응용 프로그램은 가능한 한 빨리 수정하십시오. 대신 ALTER TABLE 또는 CREATE TABLE 문에서 DEFAULT 키워드를 사용하여 기본 정의를 만드는 것이 좋습니다. 자세한 내용은 DEFAULT 정의 만들기 및 수정를 참조하십시오.

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

구문

sp_bindefault [ @defname = ] 'default' , 
    [ @objname = ] 'object_name' 
    [ , [ @futureonly = ] 'futureonly_flag' ] 

인수

  • [ [ @defname= ] 'default'
    CREATE DEFAULT 문으로 작성된 기본값의 이름입니다. default는 nvarchar(776)이며 기본값은 없습니다.

  • [ [ @objname= ] 'object_name'
    기본값이 바인딩될 별칭 데이터 형식 또는 테이블과 열의 이름입니다. object_name은 nvarchar(776)이며 기본값은 없습니다. object_name은 varchar(max), nvarchar(max), varbinary(max), xml 또는 CLR 사용자 정의 형식을 사용하여 정의할 수 없습니다.

    object_name이 한 부분으로 된 이름이면 별칭 데이터 형식으로 확인되고, 두 부분이나 세 부분으로 된 이름이면 먼저 테이블 및 열로 확인된 다음 확인이 실패하면 별칭 데이터 형식으로 확인됩니다. 기본적으로 별칭 데이터 형식의 기존 열은 기본값이 열에 직접 바인딩된 경우를 제외하고는 default를 상속합니다. text, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, timestamp, CLR 사용자 정의 형식 열, IDENTITY 속성을 가진 열, 계산 열 또는 이미 DEFAULT 제약 조건을 갖고 있는 열에는 기본값을 바인딩할 수 없습니다.

    [!참고]

    object_name은 구분 식별자로 대괄호([])를 포함할 수 있습니다. 자세한 내용은 구분 식별자(데이터베이스 엔진)를 참조하십시오.

  • [ [ @futureonly= ] 'futureonly_flag'
    기본값을 별칭 데이터 형식에 바인딩하는 경우에만 사용합니다. futureonly_flag는 varchar(15)이며 기본값은 NULL입니다. 이 매개 변수가 futureonly로 설정된 경우에는 해당 데이터 형식의 기존 열이 새 기본값을 상속할 수 없습니다. 이 매개 변수는 열에 기본값을 바인딩할 때는 절대 사용되지 않습니다. futureonly_flag가 NULL인 경우에는 현재 기본값이 없거나 별칭 데이터 형식의 기존 기본값을 사용하는 별칭 데이터 형식의 열에 새 기본값이 바인딩됩니다.

반환 코드 값

0(성공) 또는 1(실패)

주의

DEFAULT 제약 조건이 보다 선호되는 방법이긴 하지만 기존 기본값의 바인딩을 해제하지 않고도 sp_bindefault를 사용하여 열 또는 별칭 데이터 형식에 새 기본값을 바인딩할 수 있습니다. 이전의 기본값은 무시됩니다. SQL Server 시스템 데이터 형식 또는 CLR 사용자 정의 형식에는 기본값을 바인딩할 수 없습니다. 기본값을 바인딩한 열과 기본값이 호환되지 않는 경우에는 바인딩할 때가 아니라 SQL Server 데이터베이스 엔진가 기본값을 삽입하려고 시도할 때 오류 메시지를 반환합니다.

별칭 데이터 형식의 기존 열은 기본값이 열에 직접 바인딩되거나 futureonly_flag가 futureonly로 지정된 경우를 제외하고는 새 기본값을 상속합니다. 별칭 데이터 형식의 새 열은 항상 기본값을 상속합니다.

열에 기본값을 바인딩하는 경우에는 관련 정보가 sys.columns 카탈로그 뷰에 추가되며 별칭 데이터 형식에 기본값을 바인딩하는 경우에는 관련 정보가 sys.types 카탈로그 뷰에 추가됩니다.

사용 권한

테이블 소유자, sysadmin 고정 서버 역할의 멤버 또는 db_ownerdb_ddladmin 고정 데이터베이스 역할의 멤버여야 합니다.

1. 열에 기본값 바인딩

today라는 기본값이 CREATE DEFAULT에 의해 현재 데이터베이스에 정의되었으며, 다음 예에서는 이 기본값을 Employee 테이블의 HireDate 열에 바인딩합니다. HireDate 열의 데이터가 제공되지 않은 채로 Employee 테이블에 행이 추가될 때마다 열은 today라는 기본값을 할당받게 됩니다.

USE master;
GO
EXEC sp_bindefault 'today', 'HumanResources.Employee.HireDate';

2. 별칭 데이터 형식에 기본값 바인딩

def_ssn이라는 이름의 기본값과 ssn이라는 이름의 별칭 데이터 형식이 이미 존재합니다. 다음 예에서는 기본값 def_ssn을 ssn에 바인딩합니다. 테이블을 작성할 때 별칭 데이터 형식인 ssn으로 할당된 모든 열은 기본값을 상속합니다. ssn 형식의 기존 열 또한 futureonly_flag 값에 대해 futureonly가 지정된 경우 또는 열에 직접 바인딩된 기본값이 있는 경우를 제외하고는 기본값 def_ssn을 상속합니다. 열에 바인딩된 기본값은 데이터 형식에 바인딩된 값보다 항상 우선합니다.

USE master;
GO
EXEC sp_bindefault 'def_ssn', 'ssn';

3. futureonly_flag 사용

다음 예에서는 기본값 def_ssn을 별칭 데이터 형식 ssn에 바인딩합니다. futureonly가 지정되었으므로 ssn 형식의 기존 열은 영향을 받지 않습니다.

USE master;
GO
EXEC sp_bindefault 'def_ssn', 'ssn', 'futureonly';

4. 구분 식별자 사용

다음 예에서는 object_name에서 구분 식별자 [t.1]을 사용하는 방법을 보여 줍니다.

USE master;
GO
CREATE TABLE [t.1] (c1 int) 
-- Notice the period as part of the table name.
EXEC sp_bindefault 'default1', '[t.1].c1' 
-- The object contains two periods; 
-- the first is part of the table name, 
-- and the second distinguishes the table name from the column name.