반응형
  1. /**********************************************************************************************
    -- Title : [2k5] check와 nocheck 설정 시기 비교
    -- Reference : BOL
    -- Key word : with check nocheck foreign key constraint
    **********************************************************************************************/
    WITH CHECK | WITH NOCHECK
     
    새로 추가되거나 다시 설정된 FOREIGN KEY 또는 CHECK 제약 조건에 대해 테이블의 데이터 유효성 검사 여부를 지정합니다. 값을 지정하지 않으면 새 제약 조건에는 WITH CHECK가, 다시 설정된 제약 조건에는 WITH NOCHECK가 설정됩니다.
     
    기존 데이터에 대해 새로운 CHECK 또는 FOREIGN KEY 제약 조건을 확인하지 않으려면 WITH NOCHECK를 사용합니다. 이 방법은 꼭 필요한 경우를 제외하면 사용하지 않는 것이 좋습니다. 새로운 제약 조건은 향후 데이터가 업데이트될 때마다 평가됩니다. 따라서 제약 조건 추가 시 WITH NOCHECK에 의해 숨겨진 모든 제약 조건 위반은 제약 조건에 위배되는 데이터가 있는 행을 업데이트할 경우 업데이트 오류를 발생시킬 수 있습니다.
     
    쿼리 최적화 프로그램은 WITH NOCHECK가 정의된 제약 조건을 고려하지 않습니다. 그러한 제약 조건은 ALTER TABLE table CHECK CONSTRAINT ALL을 사용하여 다시 설정될 때까지 무시됩니다.
     
    alter table login.dbo.id_ip
    with nocheck
    add constraint fk_id_ip_member foreign key(id) references login.dbo.member(id) ;
     
    alter table login.dbo.id_ip
    check constraint fk_id_ip;

반응형

+ Recent posts