如何处理SQL Server ghost FK约束?

如何处理SQL Server ghost FK约束?,sql,sql-server,constraints,Sql,Sql Server,Constraints,我在使用SQLServer2005数据库时遇到了一些问题,该数据库似乎在保留重影约束。我有一个脚本,它删除了有问题的约束,做了一些工作,然后重新添加相同的约束。正常情况下,它工作正常。但是,现在它无法重新添加约束,因为数据库说它已经存在,即使删除操作正常 以下是我正在处理的问题: alter table individual drop constraint INDIVIDUAL_EMP_FK ALTER TABLE INDIVIDUAL ADD CONSTRAINT INDIVIDUAL

我在使用SQLServer2005数据库时遇到了一些问题,该数据库似乎在保留重影约束。我有一个脚本,它删除了有问题的约束,做了一些工作,然后重新添加相同的约束。正常情况下,它工作正常。但是,现在它无法重新添加约束,因为数据库说它已经存在,即使删除操作正常

以下是我正在处理的问题:

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%'
两者都不返回结果(或null),但当我再次尝试添加查询时,我得到:

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

试图删除它会给我一个信息,它不存在。有什么想法吗?

这意味着创建FK时数据是错误的

也就是说,在单个子表中有“EMPLOYEE_ID”值,而在父EMPLOYEE表中不存在这些值


您可以使用
ALTER TABLE…和NOCHECK ADD CONSTRAINT…
,但FK完全没有用。该消息是关于刚刚添加并正在验证的约束个体_EMP_FK的。验证失败,隐式事务回滚,新添加的约束消失。是的,这正是它的原委。这是一条错误消息,它指的是我试图添加的FK,这让我很反感。谢谢你的帮助!