一对一的关系是否可以在Oracle中使用约束完全建模?换句话说,父实体始终恰好具有子实体的n个子实体,并且每个子实体只有一个父实体。
考虑n是数据库常量。
发布于 2009-08-05 21:29:26
要做到这一点,即使当多个会话正在进行更新时,它也是健全和正确的,这并不容易。如果您尝试使用触发器执行此操作,您将陷入一片混乱,而Oracle的声明性约束不足以表达这一点。
具体做法如下:
然后,您可以执行一系列insert/update/delete语句。提交时,实体化视图将刷新,如果不满足条件,此时将出现违反约束的错误。
一个额外的技巧是只将不符合约束的行包含到物化视图中(具有count(ChildId) <> 5),这样就不会浪费任何存储空间。
发布于 2009-08-05 21:22:52
在更早的“鸡+蛋”点的基础上,您可以创建可推迟的约束,这些约束在提交时才会生效……这些会有帮助吗?
例如:
ALTER TABLE AGREEMENTS ADD CONSTRAINT name FOREIGN KEY (column) REFERENCES table (column) DEFERRABLE INITIALLY DEFERRED;发布于 2009-08-05 20:35:27
我不明白是怎么回事。这是一个古老的问题:“先有鸡还是先有蛋?”在尚未添加子元素的情况下,如何约束父元素,以及如何在没有父元素的情况下添加子元素?
您可以创建一个名为"ValidParents“的新表,该表只包含具有N个子in的父in,并使其与触发器保持同步。
https://stackoverflow.com/questions/1235544
复制相似问题