具有连接表

时间:2018-06-13 10:57:47

标签: mysql sql many-to-many

我在数据库中有三个表NotesTagsNoteTagJoin我正在使用many to many数据库关系存储在NoteTagJoin表中的外键现在我知道您可以设置外键onCascade delete,据我所知,如果我删除Note所有TagsNoteTagJoin引用将被删除与此关联{ {1}},但是有没有办法这样做只会从Note条目中删除Notes而不是NoteTagJoin的引用,因为其他注释可以使用onCascade使用相同的标记删除?

2 个答案:

答案 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 ;

Demo

相关问题