我在数据库中有三个表Notes
,Tags
,NoteTagJoin
我正在使用many to many
数据库关系存储在NoteTagJoin
表中的外键现在我知道您可以设置外键onCascade delete
,据我所知,如果我删除Note
所有Tags
和NoteTagJoin
引用将被删除与此关联{ {1}},但是有没有办法这样做只会从Note
条目中删除Notes
而不是NoteTagJoin
的引用,因为其他注释可以使用onCascade使用相同的标记删除?
答案 0 :(得分:2)
我想到的最简单的解决方案是将ON DELETE CASCADE
与桥接表NoteTagJoin
一起使用。然后,删除Notes
表中的注释将删除注释标记关联,但不会从Tags
表中删除任何内容。
这留下了可能悬挂的标签与任何音符无关的问题。但也许您可以运行定期清理工作来删除它们,或者这些工作可能由某人(例如应用程序)手动管理。
答案 1 :(得分:1)
是的,你可以
ALTER TABLE `notes_tags`
ADD FOREIGN KEY (`note_id`) REFERENCES `notes` (`id`) ON UPDATE CASCADE ON DELETE CASCADE,
ADD FOREIGN KEY (`tag_id`) REFERENCES `tags` (`id`) ON UPDATE CASCADE ON DELETE CASCADE ;