다음을 통해 공유


sp_bindefault(Transact-SQL)

적용 대상: SQL ServerAzure SQL Database Azure SQL Managed Instance

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

Important

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

Transact-SQL 구문 표기 규칙

구문

sp_bindefault
    [ @defname = ] N'defname'
    , [ @objname = ] N'objname'
    [ , [ @futureonly = ] 'futureonly' ]
[ ; ]

인수

[ @defname = ] N'defname'

에서 만든 CREATE DEFAULT기본값의 이름입니다. @defname nvarchar(776)이며 기본값은 없습니다.

[ @objname = ] N'objname'

기본값을 바인딩할 테이블 및 열의 이름 또는 별칭 데이터 형식입니다. @objname nvarchar(776)이며 기본값은 없습니다. @objname varchar(max), nvarchar(max), varbinary(max), xml 또는 CLR 사용자 정의 형식으로 정의할 수 없습니다.

@objname 한 부분으로 구성된 이름인 경우 별칭 데이터 형식으로 확인됩니다. 두 부분 또는 세 부분으로 구성된 이름인 경우 먼저 테이블 및 열로 확인됩니다. 이 확인이 실패하면 별칭 데이터 형식으로 확인됩니다. 기본적으로 별칭 데이터 형식의 기존 열은 기본값이 열에 직접 바인딩되지 않는 한 @defname 상속합니다. 기본값은 텍스트, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, 타임스탬프 또는 CLR 사용자 정의 형식 열, 속성이 있는 IDENTITY 열, 계산 열 또는 이미 DEFAULT 제약 조건이 있는 열에 바인딩할 수 없습니다.

@objname 구분된 식별자로 대괄호([])를 포함할 수 있습니다. 자세한 내용은 데이터베이스 식별자를 참조 하세요.

[ @futureonly = ] 'futureonly'

별칭 데이터 형식에 기본값을 바인딩하는 경우에만 사용됩니다. @futureonly 기본값NULL인 varchar(15)입니다. 이 매개 변수를 futureonly설정하면 해당 데이터 형식의 기존 열이 새 기본값을 상속할 수 없습니다. 이 매개 변수는 열에 기본값을 바인딩할 때 사용되지 않습니다. @futureonly NULL경우 새 기본값은 현재 기본값이 없거나 별칭 데이터 형식의 기존 기본값을 사용하는 별칭 데이터 형식의 모든 열에 바인딩됩니다.

반환 코드 값

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

설명

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

별칭 데이터 형식의 기존 열은 기본값이 직접 바인딩되거나 futureonlyfutureonly지정되지 않는 한 새 기본값을 상속합니다. 별칭 데이터 형식의 새 열은 항상 기본값을 상속합니다.

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

사용 권한

사용자는 테이블을 소유하거나 sysadmin 고정 서버 역할의 멤버이거나 고정 데이터베이스 역할의 db_ownerdb_ddladmin.

예제

A. 열에 기본값 바인딩

명명된 today 기본값은 .를 사용하여 CREATE DEFAULT현재 데이터베이스에 정의됩니다. 다음 예제에서는 기본값을 테이블의 열에 HireDate 바인딩합니다 Employee . 행이 테이블에 추가 Employee 되고 열에 대한 HireDate 데이터가 제공되지 않을 때마다 열은 기본값 today을 가져옵니다.

USE master;
GO

EXEC sp_bindefault 'today', 'HumanResources.Employee.HireDate';

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

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

USE master;
GO

EXEC sp_bindefault 'def_ssn', 'ssn';

C. futureonly 옵션을 사용합니다.

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

USE master;
GO

EXEC sp_bindefault 'def_ssn', 'ssn', 'futureonly';

D. 구분된 식별자 사용

다음 예제에서는 @objname 구분된 식별자를 [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.