【发布时间】:2020-06-16 15:31:20
【问题描述】:
我在名为 CPGRPRULREL 的表中有以下数据。
CPGRPRULREL_NUM | CPGRPRULREL_NUM_PRIOR | STATUS | CNDQUALSRC_CD | CNDQUALTYP_CD | CPGRP_NUM
--------------------------------------------------------------------------------------------------
41292 | 41289 | Active | PRODCNT | PRODCNTUNQ |
41289 | 41286 | Superseded | OTHERPG | | 118729
41286 | 41283 | Superseded | SUBM | VOLUME |
41283 | 41280 | Superseded | OTHERPG | | 118729
41280 | 41277 | Superseded | OTHERPG | | 118729
41277 | null | Superseded | PRODCNT | PRODCNTALL |
这里,CPGRPREL_NUM_PRIOR 是指向 CPGRPRULREL_NUM 的链接(即具有外键约束 - 一种父子关系)。
我想删除所有 CPGRP_NUM = 118729。在此之前,我需要更新剩余行的 CPGRPRULREL_NUM_PRIOR 的值,以便正确链接保持不变。
我需要更新查询,它只会更新具有 CPGRP_NUM 118729 的行,并且在运行更新后具有以下数据。
CPGRPRULREL_NUM | CPGRPRULREL_NUM_PRIOR | STATUS | CNDQUALSRC_CD | CNDQUALTYP_CD | CPGRP_NUM
--------------------------------------------------------------------------------------------------
41292 | 41286 | Active | PRODCNT | PRODCNTUNQ |
41289 | 41286 | Superseded | OTHERPG | | 118729
41286 | 41277 | Superseded | SUBM | VOLUME |
41283 | 41280 | Superseded | OTHERPG | | 118729
41280 | 41277 | Superseded | OTHERPG | | 118729
41277 | null | Superseded | PRODCNT | PRODCNTALL |
请注意,CPGRPREL_NUM 为 41292 和 41286 的 2 行已更新 CPGRPRULREL_NUM_PRIOR。
【问题讨论】:
-
为什么
CPGRPRULREL_NUM = 41283没有更新到41277? -
我打算删除所有 CPGRP_NUM = 118729 的行。所以即使 CPGRPRULREL_NUM = 41283 没有更新也可以。目的是即使在删除 CPGRP_NUM = 118729 的行之后也能建立传播的父子关系。
标签: sql oracle foreign-keys parent-child hierarchical-data