我正在尝试确保在没有更多使用级联删除的引用时自动删除某些数据。我将使用基于 Stack Overflow的假数据库进行解释。
我有一张Post
桌子。每个帖子都有零到多个标签。
所以它应该看起来像:
发布 <-> PostTags <-> 标签
例如。
帖子 1 有标签“A”、“B”、“C” 帖子 2 有标签“C”、“D”。
现在,我正在做的是,当我删除帖子 2 的所有标签(例如DELETE FROM PostTags WHERE PostId = 2
)时,我希望标签 'D' 也被删除,因为如果没有其他人引用它。我认为级联删除会处理这个问题,但当然只有当你从Tag->PostTags
or级联下来时Post->PostTags
。
我不知道如何处理这个。
恐怕人们会建议使用触发器:((系统的额外复杂性)。
想法?
注意:数据库是 MS Sql2008。