2012-06-05 244 views
0

相抵触,所以我有2个相互关联与FK外键:与外键约束

appointment 
    {id, dept.id, datetime, sometable.id, sometableagain.id} 
task 
    {id, appointment.id, deptlead.id, taskname} 
deptlead 
    {id, name} 

,所以我不得不改变预约表,从另一个表外键的另一个表。所以我放弃了键(task_appointment_fk,appointment_sometable_fk,appointment_sometableagain_fk)修改了表格以添加新字段并再次添加了所有内容。最后两个添加没有问题。而另外一个(task_appointment_fk)不停地给我一个这样的信息:

"ALTER TABLE statement conflicted with the Forien Key Constraint "dept_appointment". The Cconflict occurred in the database "MyDb" , table "appointment", column "id" 

,所以我找到了一些解决方案,指出有可能是对具有不上任命表中存在一个appointmentid值任务的某些行。所以我尝试插入具有相同值的行。仍然给我同样的事情。事情是,我想从任务中删除行,以使其更容易,但这样做,我必须再次放弃所有的fks,并在其他桌子上做同样的事情,我有很多其他表..

需要一些建议。

谢谢!!

回答

0

您可以编写查询来查看外键表中的哪些值在主键表中没有匹配的键记录。如果值存在,则尝试删除它们。

select * from  [task] a 
left join [appointment] b 
on  a.appointment_id = b.id 
+0

是的,我读过这个地方。这个问题就像我说的那样,还有几个fk连接到这些fks上。如果我这样做,将很难检索它们并重新映射它们。 – gdubs