2016-08-03 3 views
0

:점검 제한 조건은 다음 표에 점검 제한 조건을 추가하려고

CREATE TABLE TEST_A 
(
    NAME VARCHAR(55), 
    Country VARCHAR(50) 
) 

ALTER TABLE TEST_A 
    ADD CONSTRAINT CK_GBR_TO_IND 
     CHECK (Country = CASE WHEN 'GBR' THEN 'IND' ELSE COUNTRY END); 

나는 다음과 같은 오류가 점점 오전 :

Msg 4145, Level 15, State 1, Line 2
An expression of non-boolean type specified in a context where a condition is expected, near 'THEN'.

+1

삽입 할 값을 변경할 수 없습니다. 체크 제약에서. 대신 트리거를 사용하는 것이 좋습니다. –

+0

왜 트리거를 사용하지 않습니까? – Sami

+0

country = GBR 다음 국가 = IND – Sami

답변

2

대신 트리거를 시도를 .. You Can't use Check Constraint to change values ...

create trigger trg_test 
on yourtable 
instead of insert 
as 
Begin 

insert into yourtable--assuming it has only country column 
select case when country='GBR' then 'IND' 
else country end 
from Inserted 

end 
+0

다음 오류와 함께 실패합니다. 메시지 4145, 수준 15, 상태 1, 줄 8 조건이 예상되는 컨텍스트에서 지정한 부울 유형이 아닌 표현식입니다 ('근처'). – Sharktooth

+0

@Sharktooth : 트리거가있는 예제 참조 – TheGameiswar

+0

트리거 만 수행 할 수있는 방법입니다. – Sharktooth

1
ALTER TABLE TEST_A ADD CONSTRAINT CK_GBR_TO_IND 
CHECK (Country IN('GBR', 'IND')); 
+0

을 설정하면 insertin 후 트리거를 사용할 수 있습니다. 그러나 삽입 된 행에 IND가 GBR 인 경우 레코드 값을 변경하고 다른 모든 레코드 세트는 평소와 같이 삽입해야합니다. – Sharktooth

+0

@Sharktooth : GBR과 IND가있는 레코드를 방지 하시겠습니까? – TheGameiswar

+0

@TheGameiswar 아니요, 삽입되는 행에 Country = GBR이 있으면 대신 'IND'를 삽입하십시오. – Sharktooth