sp_bindrule(Transact-SQL)
열 또는 별칭 데이터 형식에 규칙을 바인딩합니다.
중요: |
---|
Microsoft SQL Server의 이후 버전에서는 이 기능이 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 말고, 현재 이 기능을 사용하는 응용 프로그램은 수정하십시오. CHECK 제약 조건을 대신 사용하십시오. CREATE TABLE 또는 ALTER TABLE 문의 CHECK 키워드를 사용하여 CHECK 제약 조건을 만들 수 있습니다. |
구문
sp_bindrule [ @rulename = ] 'rule' ,
[ @objname = ] 'object_name'
[ , [ @futureonly = ] 'futureonly_flag' ]
인수
[ @rulename=] 'rule'
CREATE RULE 문으로 작성된 규칙의 이름입니다. rule은 **nvarchar(776)**이며 기본값은 없습니다.
[ @objname=] 'object_name'
규칙을 바인딩할 테이블 및 열 또는 별칭 데이터 형식입니다. text, ntext, image, varchar(max), nvarchar(max), varbinary(max), xml, CLR 사용자 정의 형식 또는 timestamp 열에는 규칙을 바인딩할 수 없습니다. 계산 열에는 규칙을 바인딩할 수 없습니다.
object_name은 **nvarchar(776)**이며 기본값은 없습니다. object_name이 한 부분으로 된 이름인 경우 별칭 데이터 형식으로 확인하며 두 부분 또는 세 부분으로 된 이름이면 먼저 테이블 및 열로 확인한 다음 이 확인이 실패하는 경우 별칭 데이터 형식으로 확인합니다. 기본적으로 별칭 데이터 형식의 기존 열은 직접 바인딩된 규칙이 없는 경우 rule을 상속합니다.
[!참고] object_name은 구분 식별자 문자로 대괄호 [ 및 ] 문자를 포함할 수 있습니다. 자세한 내용은 구분 식별자(데이터베이스 엔진)를 참조하십시오.
[!참고] 별칭 데이터 형식을 사용하는 식에 대해 만든 규칙을 열이나 별칭 데이터 형식에 바인딩할 수 있지만 이들 규칙을 참조할 때 컴파일할 수 없습니다. 별칭 데이터 형식에 대해 만든 규칙을 사용하지 마십시오.
[ @futureonly= ] 'futureonly_flag'
별칭 데이터 형식에 규칙을 바인딩할 때만 사용합니다. future_only_flag는 **varchar(15)**이며 기본값은 NULL입니다. 이 매개 변수가 futureonly로 설정된 경우에는 별칭 데이터 형식의 기존 열이 새 규칙을 상속하는 것을 방지합니다. futureonly_flag가 NULL인 경우 현재 규칙이 없거나 별칭 데이터 형식의 기존 규칙을 사용하는 별칭 데이터 형식의 모든 열에 새 규칙이 바인딩됩니다.
반환 코드 값
0(성공) 또는 1(실패)
주의
CHECK 제약 조건을 사용하는 것이 바람직하지만 sp_bindrule을 사용하면 기존 규칙의 바인딩을 해제하지 않고도 열 또는 별칭 데이터 데이터 형식에 새 규칙을 바인딩할 수 있습니다. 이 경우 이전 규칙은 무시됩니다. 기존의 CHECK 제약 조건으로 규칙이 열에 바인딩된 경우에는 모든 제한이 평가됩니다. SQL Server 데이터 형식에 규칙을 바인딩할 수 없습니다.
규칙은 바인딩 시점이 아니라 INSERT 문을 시도할 때 적용되며 이 INSERT 작업이 유효하지 않더라도 numeric 데이터 형식의 열에 문자 규칙을 바인딩할 수 있습니다.
futureonly_flag를 futureonly로 지정하지 않으면 기존 별칭 데이터 형식의 열이 새 규칙을 상속합니다. 별칭 데이터 형식으로 정의된 새 열은 항상 규칙을 상속합니다. 그러나 ALTER TABLE 문의 ALTER COLUMN 절이 열의 데이터 형식을 규칙에 바인딩된 별칭 데이터 형식으로 변경하는 경우에는 데이터 형식에 바인딩된 규칙이 열에 상속되지 않습니다. 반드시 sp_bindrule을 사용하여 규칙을 열에 지정하여 바인딩해야 합니다.
열에 규칙을 바인딩하면 sys.columns 테이블에 관련 정보가 추가됩니다. 별칭 데이터 형식에 규칙을 바인딩하면 sys.types 테이블에 관련 정보가 추가됩니다.
사용 권한
테이블 열에 규칙을 바인딩하려면 해당 테이블에 대한 ALTER 권한이 필요합니다. 별칭 데이터 형식에 규칙을 바인딩하려면 별칭 데이터 형식에 대한 CONTROL 권한 또는 그 형식이 속한 스키마에 대한 ALTER 권한이 필요합니다.
예
1. 열에 규칙 바인딩
CREATE RULE 문을 사용하여 현재 데이터베이스에 today
라는 규칙을 만들었다고 가정할 때 다음 예에서는 Employee
테이블의 HireDate
열에 이 규칙을 바인딩하는 방법을 보여 줍니다. 이제 Employee
에 행을 추가하면 HireDate
열의 데이터가 today
규칙에 부합하는지 확인합니다.
USE master;
GO
EXEC sp_bindrule 'today', 'HumanResources.Employee.HireDate'
2. 별칭 데이터 형식에 규칙 바인딩
rule_ssn
이라는 규칙과 ssn
이라는 별칭 데이터 형식이 있다고 가정할 때 다음 예에서는 ssn
에 rule_ssn
을 바인딩하는 방법을 보여 줍니다. CREATE TABLE 문에서 ssn
형식의 열은 rule_ssn
규칙을 상속합니다. futureonly_flag에 futureonly를 지정하였거나 ssn
에 직접 바인딩한 규칙이 있는 경우가 아니라면 기존 ssn
형식의 열 또한 rule_ssn
규칙을 상속합니다. 데이터 형식에 바인딩한 규칙보다 열에 바인딩한 규칙이 항상 우선합니다.
USE master;
GO
EXEC sp_bindrule 'rule_ssn', 'ssn'
3. futureonly_flag 사용
다음 예에서는 ssn
별칭 데이터 형식에 rule_ssn
규칙을 바인딩하는 방법을 보여 줍니다. futureonly
를 지정하였으므로 기존 ssn
형식의 열은 전혀 영향을 받지 않습니다.
USE master;
GO
EXEC sp_bindrule 'rule_ssn', 'ssn', 'futureonly'
4. 구분 식별자 사용
다음 예에서는 object_name 매개 변수에서 구분 식별자를 사용하는 방법을 보여 줍니다.
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.
참고 항목
참조
시스템 저장 프로시저(Transact-SQL)
데이터베이스 엔진 저장 프로시저(Transact-SQL)
CREATE RULE(Transact-SQL)
DROP RULE(Transact-SQL)
sp_unbindrule(Transact-SQL)
시스템 저장 프로시저(Transact-SQL)