2010-04-09 3 views
2

SQL Server 2005 데이터베이스에 고스트 제약 조건을 유지하는 것과 같은 문제가 있습니다. 문제의 제약 조건을 삭제하고, 일부 작업을 수행 한 다음 동일한 제약 조건을 다시 추가하는 스크립트가 있습니다. 일반적으로 정상적으로 작동합니다. 그러나 데이터베이스가 이미 존재한다고 말하기 때문에 제약 조건을 다시 추가 할 수는 없습니다.SQL Server 고스트 FK 제약 조건에 대해 수행 할 수있는 작업은 무엇입니까?

select object_id('INDIVIDUAL_EMP_FK') 
select * from sys.foreign_keys where name like 'individual%' 
: 제약 조건이 삭제됩니다

alter table individual drop constraint INDIVIDUAL_EMP_FK 

ALTER TABLE INDIVIDUAL 
    ADD CONSTRAINT INDIVIDUAL_EMP_FK 
      FOREIGN KEY (EMPLOYEE_ID) 
         REFERENCES EMPLOYEE 

후, 개체가 정말 다음과 같은 쿼리를 사용하여 사라진 것을 확인했습니다 : 여기

내가 함께 일하고 있어요 쿼리입니다

모두 어떤 결과 (또는 null)을 반환하지 않습니다,하지만 난 다시 쿼리를 추가 할 때, 내가 얻을 :

The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "INDIVIDUAL_EMP_FK". 

TR 그것을 떨어 뜨리기 위해 나는 그것이 존재하지 않는다는 메시지를받습니다. 어떤 아이디어?

답변

4

그것은 데이터가 당신이 돈이 부모 EMPLOYEE 테이블에 존재하지 개별 자식 테이블에서 "EMPLOYEE_ID"값을 가지고있는 FK

의 생성에 잘못된 것을 의미합니다.

ALTER TABLE ...WITH NOCHECK ADD CONSTRAINT...을 사용할 수 있지만 FK는 사용하지 않습니다.

+1

정확히 일치합니다. 이 메시지는 * 방금 추가 된 * INDIVIDUAL_EMP_FK 제약 조건에 대한 메시지이며 현재 검증 중입니다. 확인에 실패하면 암시 적 트랜잭션이 롤백되고 새로 추가 된 제한 조건이 사라집니다. –

+1

그래, 정확히 그게 그랬어. FK를 언급하는 오류 메시지가 나는 그것을 버리려고했다. 도와 주셔서 감사합니다! – rcook8601

관련 문제