我的表格如下:
+----------+---------+
| ParentId | ChildId |
+----------+---------+
当主键是子ID时,这是一对多的关系(一个父,多个孩子),因为一个孩子只能映射到一个父(到目前为止都非常直接)。
我现在提出问题,我想添加一个二级列,如下所示:
+----------+---------+---------+
| ParentId | ChildId | Deleted |
+----------+---------+---------+
所以情况是我需要跟踪,出于审计原因,删除父母的映射,我的想法是如果已删除,那么Child Id就是唯一的错误。问题是我如何实现这一目标?是否有可能或者应该创建一个我用来存档已删除条目的辅助表,其他任何建议我如何实现这个或我可以采取的另一种方法?
答案 0 :(得分:1)
我认为这是你的问题:
我的想法是让Child Id独一无二iff Deleted很好。 问题是我如何实现这个目标?
如果是这样,您可以使用过滤的唯一索引:
create unique index unq_t_parent_child on t(parent, child)
where isdeleted = 0;