DELETE语句与引用约束“fk_claims_patients”冲突

本文关键字:claims patients 冲突 fk 语句 引用 约束 DELETE | 更新日期: 2023-09-27 18:09:10

我试图删除一个"人"从我的网站表,但我得到错误,写在帖子的标题,错误是指向我这个代码:

Patient patient = db.Patients.Single(p => p.Patient id == id);
db.Patients.Remove(patient);
db.SaveChanges();
return RedirectToAction("Index");

或者,如果可能的话,我如何添加一个例外,这样当我点击删除按钮时,它会打开另一个页面并告诉我,我没有删除那个人的权利。

知道的吗?

DELETE语句与引用约束“fk_claims_patients”冲突

您需要删除引用该患者的所有索赔。实现此目的的一种方法是向外键约束添加级联删除,但是,我不知道您使用的是哪个DBMS。

错误信息似乎建议SQL Server,所以这里有一些SQL Server的信息-级联引用完整性约束

为了解决这个问题,您需要执行一个DROP约束,然后执行一个ADD约束。

ALTER TABLE dbo.Claims
   DROP CONSTRAINT FK_Claims_Patients
ALTER TABLE dbo.Claims
   ADD CONSTRAINT FK_Claims_Patients
   FOREIGN KEY (PatientId) REFERENCES dbo.Patients(PatientId) ON DELETE CASCADE
Patient patient = db.Patients.Single(p => p.Patient id == id);
patient.Claims.clear();
db.Patients.Remove(patient);
db.SaveChanges();

将删除链接表中的相关项,并允许删除。