圣诞节快乐,
我正在寻找一种替代数据库设计来避免这种“超级安全”错误:
在表“%2”上引入 FOREIGN KEY 约束“%1”可能会导致循环或多级联路径。指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
当同一个表的2个字段引用同一个FK时。例如:
People: {Id, Name, Age, Gender}
FamilyRelative: {PersonId, FamiliarId, Relationship}
FK: FamilyRelative.PersonId ->People.Id ON DELETE CASCADE ON UPDATE CASCADE
FK: FamilyRelative.FamiliarId->People.Id ON DELETE CASCADE ON UPDATE CASCADE
在第二个 FK 上引发错误。
PS:我正在SQL Server 2008R2中测试它
您可以删除家庭亲属上的 DELETE CASCADE 操作。FamiliarIs
然后,当您想先删除人员记录时,您
DELETE FROM FamilyRelative
WHERE FamiliarId = @PeopleId
然后你
DELETE FROM People
WHERE Id = @PeopleId
最后一次删除将使用 CASCADE 规则处理剩余的 FamilyRelative 记录,其中 FamilyRelative.PeopleId = @PeopleId
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)