sp_bindrule(Transact-SQL)

적용 대상:SQL ServerAzure SQL Database

규칙을 열 또는 별칭 데이터 형식에 바인딩합니다.

Important

이 기능은 이후 버전의 SQL Server에서 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 않도록 하고, 현재 이 기능을 사용하는 애플리케이션은 수정하세요. 대신 Unique 제약 조건 및 검사 제약 조건을 사용합니다. CHECK 제약 조건은 CREATE TABLE 또는 ALTER TABLE 문의 CHECK 키워드(keyword) 사용하여 만들어집니다.

Transact-SQL 구문 표기 규칙

구문

sp_bindrule
    [ @rulename = ] N'rulename'
    , [ @objname = ] N'objname'
    [ , [ @futureonly = ] 'futureonly' ]
[ ; ]

인수

[ @rulename = ] N'rulename'

문에서 만든 규칙의 이름입니다 CREATE RULE . @rulename nvarchar(776)이며 기본값은 없습니다.

[ @objname = ] N'objname'

테이블 및 열 또는 규칙이 바인딩될 별칭 데이터 형식입니다. @objname nvarchar(776)이며 기본값은 없습니다.

규칙은 텍스트, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, CLR 사용자 정의 형식 또는 타임스탬프 열에 바인딩할 수 없습니다. 규칙은 계산 열에 바인딩할 수 없습니다.

@objname 기본값이 없는 nvarchar(776)입니다. @objname 한 부분으로 구성된 이름인 경우 별칭 데이터 형식으로 확인됩니다. 두 부분 또는 세 부분으로 구성된 이름인 경우 먼저 테이블 및 열로 확인됩니다. 이 해결에 실패하면 별칭 데이터 형식으로 확인됩니다. 기본적으로 별칭 데이터 형식의 기존 열은 규칙이 열에 직접 바인딩되지 않는 한 @rulename 상속합니다.

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

별칭 데이터 형식을 사용하는 식에서 만든 규칙은 열 또는 별칭 데이터 형식에 바인딩될 수 있지만 참조될 때 컴파일하지 못합니다. 별칭 데이터 형식에서 만든 규칙을 사용하지 않습니다.

[ @futureonly = ] 'futureonly'

별칭 데이터 형식에 규칙을 바인딩할 때만 사용됩니다. @futureonly 기본값NULL인 varchar(15)입니다. 이 매개 변수로 futureonly설정하면 별칭 데이터 형식의 기존 열이 새 규칙을 상속하지 못하도록 방지합니다. @futureonlyNULL경우 새 규칙은 현재 규칙이 없거나 별칭 데이터 형식의 기존 규칙을 사용하는 별칭 데이터 형식의 모든 열에 바인딩됩니다.

반환 코드 값

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

설명

새 규칙을 열(제약 조건 사용 CHECK 이 선호됨) 또는 기존 규칙을 바인딩 해제하지 않고 별칭 데이터 형식에 sp_bindrule 바인딩할 수 있습니다. 이전 규칙이 재정의됩니다. 규칙이 기존 CHECK 제약 조건이 있는 열에 바인딩된 경우 모든 제한이 평가됩니다. SQL Server 데이터 형식에 규칙을 바인딩할 수 없습니다.

규칙은 바인딩이 아닌 문을 시도할 때 INSERT 적용됩니다. 이러한 작업은 유효하지 않지만 문자 규칙을 숫자 데이터 형식의 열에 바인딩할 INSERT 수 있습니다.

별칭 데이터 형식의 기존 열은 @futureonly 지정futureonly하지 않는 한 새 규칙을 상속합니다. 별칭 데이터 형식으로 정의된 새 열은 항상 규칙을 상속합니다. 그러나 문 절 ALTER TABLEALTER COLUMN 열의 데이터 형식을 규칙에 바인딩된 별칭 데이터 형식으로 변경하는 경우 데이터 형식에 바인딩된 규칙은 열에서 상속되지 않습니다. 을 사용하여 sp_bindrule규칙을 열에 특별히 바인딩해야 합니다.

열에 규칙을 바인딩하면 관련 정보가 테이블에 추가 sys.columns 됩니다. 별칭 데이터 형식에 규칙을 바인딩하면 관련 정보가 테이블에 추가 sys.types 됩니다.

사용 권한

규칙을 테이블 열에 바인딩하려면 테이블에 대한 권한이 있어야 합니다 ALTER . CONTROL 별칭 데이터 형식에 대한 사용 권한 또는 ALTER 형식이 속한 스키마에 대한 사용 권한은 규칙을 별칭 데이터 형식에 바인딩하는 데 필요합니다.

예제

A. 열에 규칙 바인딩

다음 예제에서는 문을 사용하여 CREATE RULE 현재 데이터베이스에 명명 today 된 규칙이 만들어지는 경우 해당 규칙을 테이블의 Employee 열에 HireDate 바인딩합니다. 행이 추가Employee되면 열 today 에 대한 HireDate 데이터가 규칙에 검사.

USE master;
GO

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

B. 별칭 데이터 형식에 규칙 바인딩

명명된 규칙과 명명 rule_ssnssn된 별칭 데이터 형식이 있다고 가정하면 다음 예제에서는 바인딩합니다 rule_ssnssn. 문 CREATE TABLE 에서 형식 ssn 의 열은 규칙을 상속합니다 rule_ssn . @futureonly 대해 futureonly가 지정되거나 규칙이 직접 바인딩되지 ssn않는 한 형식의 ssn 기존 열도 규칙을 상속 rule_ssn 합니다. 열에 바인딩된 규칙은 항상 데이터 형식에 바인딩된 기본값보다 우선합니다.

USE master;
GO

EXEC sp_bindrule 'rule_ssn', 'ssn';

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

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

USE master;
GO

EXEC sp_bindrule rule_ssn, 'ssn', 'futureonly';

D. 구분된 식별자 사용

다음 예제에서는 @objname 매개 변수에서 구분된 식별자를 사용하는 방법을 보여 있습니다.

USE master;
GO

CREATE TABLE [t.2] (c1 int) ;
-- Notice the period as part of the table name.
EXEC sp_bindrule rule1, '[t.2].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.