2010-04-09 62 views
2

我在使用SQL Server 2005數據庫時遇到了一些問題,看起來像是在保留一個幽靈約束。我有一個腳本可以解決上述問題,做一些工作,然後重新添加相同的約束。通常情況下,它工作正常。但是,現在,它不能重新添加約束,因爲數據庫說它已經存在,即使這個下拉工作正常!我能做些什麼關於SQL Server幽靈FK約束?

這裏是我的工作查詢:約束被丟棄

alter table individual drop constraint INDIVIDUAL_EMP_FK 

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

之後,我確信對象確實是使用以下查詢了:

select object_id('INDIVIDUAL_EMP_FK') 
select * from sys.foreign_keys where name like 'individual%' 

兩個沒有結果(或空),但是當我再次嘗試添加查詢,我得到:

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

Tr的我放棄它會讓我知道它不存在。有任何想法嗎?

回答

4

這意味着該數據是錯上創造的FK

也就是說,你必須在唐不在父EMPLOYEE表存在個別子表「EMPLOYEE_ID」的價值觀。

您可以使用ALTER TABLE ...WITH NOCHECK ADD CONSTRAINT...但是然後FK是沒有用的

+1

沒錯。該消息是關於*剛剛添加*且正在被驗證的約束INDIVIDUAL_EMP_FK。驗證失敗,隱式事務回滾,新添加的約束消失。 – 2010-04-09 20:16:22

+1

是的,就是這樣。這是錯誤信息,指的是我試圖添加的FK,把我扔掉了。謝謝您的幫助! – rcook8601 2010-04-09 21:07:18