SQL 唯一键当且仅当未删除

SQL Unique Key iff not Deleted

我有 table 如下:

+----------+---------+
| ParentId | ChildId |
+----------+---------+

这是一个one-to-many关系(一个parent,多个children),目前主键是child id,因为child 只能映射到一个 parent (到目前为止都非常简单)。
我的问题现在出现了,我想添加一个辅助列,如下所示:

+----------+---------+---------+
| ParentId | ChildId | Deleted |
+----------+---------+---------+

所以情况是我需要跟踪,出于审计原因,已删除 parents 的映射,我的想法是使 Child Id 唯一 iff Deleted 是错误的。问题是我如何实现这一目标?是否有可能或应该创建一个我用来存档已删除条目的辅助 table,还有其他建议我如何实现此方法或我可以采用的其他方法吗?

我认为这是你的问题:

my thought was to make Child Id unique iff Deleted is well false. Question is how do I achieve this?

如果是这样,您可以使用过滤后的唯一索引:

create unique index unq_t_parent_child on t(parent, child)
    where isdeleted = 0;