oracle – 建立一对一关系

可以通过约束在Oracle中完全建模一对一关系吗?换句话说,PARENT实体总是完全具有子实体的n-CHILDREN,并且每个孩子只有一个父母. 将n视为数据库常量. 解决方法 即使多个会话正在进行更新,这样做也是非常容易的.如果你尝试使用触发器,你会陷入混乱,Oracle的

可以通过约束在Oracle中完全建模一对一关系吗?换句话说,PARENT实体总是完全具有子实体的n-CHILDREN,并且每个孩子只有一个父母.

将n视为数据库常量.

解决方法

即使多个会话正在进行更新,这样做也是非常容易的.如果你尝试使用触发器,你会陷入混乱,Oracle的声明性约束不足以表达这一点.

它可以按如下方式完成: –

>在父表和子表上创建物化视图日志
>创建将它们连接在一起的物化连接视图,并计算按父组分组的子项数.这必须是快速通知
>在物化连接视图上设置一个约束,即子记录的计数必须等于“n”(数据库常量)

然后,您可以执行一系列插入/更新/删除语句.提交时,物化视图将刷新,如果不满足条件,则此时将出现约束违规错误.

奖励的一点是只包括未通过约束的行进入物化视图(HAVING count(ChildId)<> 5),因此您不会浪费任何存储空间.

关于作者: dawei

【声明】:石家庄站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

为您推荐