外键:与外键约束冲突

时间:2012-06-05 23:56:40

标签: sql sql-server foreign-keys

所以我有两个表格彼此相关,有一个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"

所以我找到了一些解决方案,说明任务中可能有一些行具有约会表上不存在的约会值。所以我尝试插入具有相同值的行。仍然给了我同样的东西。问题是,我想从任务中删除行以使其更容易但是这样做我必须再次删除所有fks并在其他表上执行相同的操作,并且我有很多其他表..

需要一些建议。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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