2017-05-23 6 views
0

여러 테이블에 퍼센트 필드를 갖고 싶습니다. 그 모든 컬럼에서, 난 그 가치가 검증하고자 항상 하나의 옵션이 더 나은 것을 위해여러 컬럼에서 check contraint를 재사용하거나 relues를 사용하는 방법

0과 100 사이의

  1. 모든 테이블의 모든 컬럼에 개별 점검 제한 조건을 정의
  2. 우리가 어떻게 그러한 제약을 재사용 할 수 있다면?

또는

  1. 새로운 범위 규칙을 퍼센트라는 사용자 정의 데이터 형식의
  2. 사용을 정의하고 아마 귀찮게하는 "충분히 큰"제약 조건이 아니라고 그 규칙
+1

['CREATE RULE'] (https://docs.microsoft.com/en-us/sql/t-sql/statements/create-rule-transact-sql) : "이 기능은 앞으로 제거 될 예정입니다. 버전의 Microsoft SQL Server. 새로운 개발 작업에서이 기능을 사용하지 마십시오 ... " –

+0

스칼라 함수를 정의하고 사용하면 좋은 옵션 인 것 같습니다. – KoolKabin

답변

0

을 적용 재사용 ...하지만 당신이해야만한다면 스칼라 함수를 정의하고 그것을 참조하는 체크 제약을 가질 수 있습니다 ...

create function dbo.IsLegalC(@c int) returns bit as 
begin 
    return(select case when @c >=0 and @c <=100 then 1 else 0 end) 
end 

go 

create table dbo.t 
(
    c 
    smallint not null 
    constraint [t.c.check] 
     check(dbo.IsLegalC(c) = 1) 
) 

... 제약 조건에 between 표현식을 사용할 수있는 경우 과도합니다 (특히 효율적이지는 않습니다).

+0

우리는 직접적인 제약 조건을 사용할 때마다, 나중에 언제든지 우리의 규칙/기준 변경, 그럼 우리는 각각의 모든 constrain을 다시 변경해야합니다. – KoolKabin

+0

동의 - 어떤 함수가 "도움이"되는 곳입니다 ...하지만 테이블에 바인딩 된 함수를 수정하는 것은 여전히 ​​테이블을 다시 검사해야한다는 것을 의미합니다 당신이 기능을 바꿀 때. – Clay

+1

@ KoolKabin -하지만 동기 부여 예제는 백분율입니다. 나는 체크하지 않았지만 퍼센티지의 정의가 변했다고 생각하지 않는다. –