
[英]I can't save a foreign key into one to many table asp.net but data can be inserted asp.net mvc 5
[英]Asp.net mvc when i am trying to add two foreign key in a table i face many problem
当我添加迁移然后更新数据库然后遇到这个错误:
表 'students' 上的外键约束 'fk_student countries_countriesid' 可能会导致循环或多个级联路径。 指定删除不操作或更新不操作,或修改其他外键约束。 无法创建约束或索引。
我面临这种类型的错误。 请帮我找出错误
想象一下当您有 table1 和 table2 的情况,每个都有一个foreign key
,并且具有on delete cascade
规范。
在这种情况下,如果您尝试从 table1 中删除被 table2 中的记录引用的记录,则 RDBMS 将尝试从 table2 中删除该记录。 然而,如果 table2 中的记录被 table1 中的记录引用(特别是如果它是初始记录),那么这会触发从 table1 中删除。 因此,r1 触发了 r2 的删除,从而触发了 r3 的删除。 但是,如果要删除的记录模式重复(无限)多次,那么您将进入无限循环。
以上是记录删除的无限级联循环的最简单方法,更笼统地说
您有 table1, <0 or more tables>, table1 其中每个表在下一个表上级联删除,导致记录删除的无限级联循环。
这是错误警告您的问题类型,它建议您将on delete
行为更改为no action
。 从技术上讲,这将防止此错误发生,但是可以理解的是,您可能希望触发删除。
一个巧妙的方法可能是拥有一个
on delete set null
并将after update
触发器添加到您以这种方式更改的表中,因此如果给定的foreign key
变为null
,则将其删除。 我没有测试这种方法,也不清楚您使用的是什么 RDBMS,但值得一试。
如果一切都失败了,那么您可以实现一个存储过程来进行清理并调用该存储过程。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.