我必须创建三个表 ACCOUNTING_POINT 作为 AP,METER_CHANGE 作为 MC,METER 作为 M 表 MC 会将 AP 与 M 连接,但我应该确保 M.id 在从 AP 到 MC 的行中是唯一的。所以我应该确定 AP 永远不会引用具有相同 M.id 的某些 MC。它看起来像这样:
这是描述我的问题的图片红色行表示问题
我知道我可以在表 MC 中使用属性“actual”并创建 pk_meter_id_actual = unique 但我想避免使用这个属性。我应该保留 MC.ap_id 用于历史记录和 AP.meter_change 用于连接
答案 0 :(得分:0)
我通过在表 MC 中添加布尔属性“actual”和两个约束来解决它: CREATE UNIQUE INDEX meter_id ON MC (meter_id, actual) WHERE (actual is true); CREATE UNIQUE INDEX ap_id ON MC (ap_id, actual) WHERE (actual is true);