删除它们的任何记录都会报告如下错误:
错误1451(23000):无法删除或 更新父行:外键 约束失败
如何克服这个问题?
答案 0 :(得分:5)
选择一条记录,允许将null
插入FK列,将其插入,删除其他记录,然后删除第一个记录。
答案 1 :(得分:4)
或者
ON DELETE CASCADE
或为其中一个FK插入NULL(如果您的架构中可能的话),在不知道供应商的情况下无法提供更多信息。
答案 2 :(得分:1)
如果您的列是AllowNull,请将其数据更新为null,然后删除数据。
答案 3 :(得分:1)
ALTER TABLE <table1> NOCHECK CONSTRAINT ALL
GO
ALTER TABLE <table2> NOCHECK CONSTRAINT ALL
GO
DELETE FROM <table1>
GO
DELETE FROM <table2>
GO
ALTER TABLE <table1> CHECK CONSTRAINT ALL
GO
ALTER TABLE <table2> CHECK CONSTRAINT ALL
GO
答案 4 :(得分:0)
如果两个表都相互引用外键,则很可能数据库设计需要改进。我想这应该叫一个额外的表来处理这个设计。
对于您的问题,您可以将一个表中的FK键字段更新为null,然后在两个表上触发删除。
但为了实现这一目标,请确保事先确定PK并将其删除。