【发布时间】:2012-08-03 12:58:43
【问题描述】:
我在分层查询中遇到问题。我有一个这样的自引用表:
id parent_id name size
-----------------------------------------
1 null Ship1 50
2 1 cabin1 10
3 1 cabin2 30
4 3 shelf1 5
5 3 shelf2 20
6 null Ship2 50
7 6 cabin1 10
8 6 cabin2 30
9 7 shelf1 15
我需要在数据库中添加一个触发器,以防止用户添加超过该船剩余尺寸的客舱。
例如,在表格中,对于 1 号船,我们的总尺寸为 50。有 2 个船舱占用了 40 的尺寸。所以现在我们剩下 10 个作为可用空间。我们应该不能再添加一个大小>10 的客舱。任何
表中可以有任意数量的船舶条目(即根)。
我知道分层查询,我可以遍历一棵树,但我发现很难收集我对这个问题的想法。谁能指出我正确的方向,以便我可以成功添加该触发器?
【问题讨论】:
-
在 Oracle 中查找“connect by”语句。你需要遍历一棵树,这就是Oracle的解决方案。
-
另外,如果您最终升级到 11gR2,oracle 现在还支持递归 CTE。顺便说一句,您认为分层表真的最适合您的需求吗?相反,我会使用“Ships”表、“Cabins”表,也许还有“Cabin Contents”表或类似的......
-
感谢您的回复戈登。我知道连接方式和分层查询。我和他们一起工作了一点,我可以轻松地穿过一棵树。但我没有得到这个特定问题的逻辑。
-
不幸的是,我没有根据自己的舒适度来修改任务的奢侈。由于我不是管理员,因此我必须解决给我的问题。但感谢您的意见!
标签: sql oracle oracle10g hierarchical-data self-referencing-table