约束以限制链接字段的数量

时间:2016-11-05 12:03:31

标签: sql oracle

我有这个问题,我没有找到一个很好的方法来做到这一点。

'插入执行这些规则的机制(通过检查,触发器,断言等)

  1. 一本书不能链接到超过3个字段(主题)'
  2. 我们有一个书桌,上面有关于这本书的信息(ISBN(PK),tittle,出版商等) 我们还有另一个字段表,这个字段包含使用ISBN作为外键链接到预订字段的信息。

    我有一个想法是制作它,以便我们计算书籍ISBN在列表中出现的次数,如果它超过3,它不会允许我们添加第4。但我不确定如何做到这一点,或者如果有更好的方法。

    谢谢!

2 个答案:

答案 0 :(得分:1)

在链接表中,添加一个带有2个约束的整数列'i':
1)唯一(ISBN,i)
2)检查(I在1和3之间)。

答案 1 :(得分:1)

一种解决方案是使用refresh fast on commit创建一个非常简单的物化视图,其中包含每本书的主题数。然后,您可以在此物化视图中对count列具有约束。这通常比触发器更有效且更易于维护 - 但它的缺点是仅在提交时检查约束。这可能适用于您的用例(对于频繁交易的表,可能不太合适)。