我试图确保在没有更多引用使用级联删除时某些数据会自动删除。我将用基于堆栈溢出的假冒数据库来解释。如何确保在多对多关系中删除冗余数据
我有一个Post
表。每篇文章都有零至多个标签。
因此,它应该是这样的:
后< - > PostTags < - >标签
如。
发布1有标签'A','B','C'发布2 有标签'C','D'。
现在,我在做什么是,当我删除所有的职位2(例如,DELETE FROM PostTags WHERE PostId = 2
)的标签,我想标签“d”,因为没有其他人,如果引用它也被删除。我认为级联删除会处理这个问题,但当然只有在你从Tag->PostTags
或Post->PostTags
级联下来的情况下才会这样。
我不知道该如何处理。
恐怕人们会建议使用一个触发:((额外的复杂系统)
思考
注:?DB是MS SQL2008
所以一些东西沿着:DELETE标签WHERE TagId不在(选择TagId FROM Post标签)? (也不知道这是否表现很好) – 2009-01-11 02:30:46