Я пытаюсь убедиться, что некоторые данные автоматически удаляются, когда больше нет ссылок, использующих каскадное удаление. Я объясню с поддельной базой данных, основанной на переполнении стека.
У меня есть Post
таблица. Каждый пост имеет от нуля до многих тегов.
Так должно выглядеть:
Post <-> PostTags <-> Метки
например.
Пост 1 имеет теги 'A', 'B', 'C' Пост 2
имеет теги 'C', 'D'.
Теперь, что я делаю, так это то, что когда я удаляю все теги для поста 2 (например, DELETE FROM PostTags WHERE PostId = 2
), я бы хотел, чтобы тег 'D' также был удален, потому что никто больше, если на него ссылаются. Я думал, что каскадное удаление справится с этим, но, конечно, это только в том случае, если вы каскадно снизитесь с Tag->PostTags
или Post->PostTags
.
Я не уверен, как справиться с этим.
Боюсь, что люди предложат использовать триггер :( (дополнительная сложность для системы).
Мысли
Примечание: БД - MS Sql2008.