问题描述
我对数据库和 sqlite 还很陌生。我有一个提供给我的数据库,供 ASP.NET MVC Web 应用程序使用。我必须对专辑、曲目、艺术家和媒体类型实施 CRUD 操作。大多数功能已经实现并正常工作,但是,在为 tracks 表 实现删除操作时,我注意到一个错误,'[19:46:57] 从表轨道删除行时出错: FOREIGN KEY 约束失败'。
有人可以帮助我理解为什么我不能在不违反外键约束的情况下从 'tracks' 表中删除一行,以及它违反了哪个约束。
非常感谢任何帮助!
这是 ERD Diagram、Tracks Table Structure、Tracks Table Constraints 和 Sample Data 的屏幕截图。
解决方法
我认为您的问题是 track 被 invoice_item 引用,也就是说您可能有 TrackID 的外键定义invoice_items 表的列引用 Tracks 表的 TrackId 列。
突出显示:-
关于评论
所有外键都有'ON UPDATE NO ACTION ON DELETE NO ACTION'
NO ACTION 是默认值,即在发生冲突时您不采取任何操作,因此冲突保持原样,从而导致错误。也许根据 https://sqlite.org/foreignkeys.html#fk_actions
考虑其他操作