我在使用SQL Server 2005数据库时遇到了一些麻烦,似乎它正在保持一个鬼约束。我有一个脚本可以删除有问题的约束,做一些工作,然后重新添加相同的约束。通常,它工作正常。但是,现在它无法重新添加约束,因为数据库表明它已经存在,即使丢弃工作正常!
以下是我正在使用的查询:
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".
尝试删除它会得到一条消息,表明它不存在。有什么想法吗?
答案 0 :(得分:4)
这意味着创建FK时数据错误
也就是说,您在INDIVIDUAL子表中具有父EMPLOYEE表中不存在的“EMPLOYEE_ID”值。
您可以使用ALTER TABLE ...WITH NOCHECK ADD CONSTRAINT...
但是FK没有用