如何在oracle中更新分层数据结构的所有子级记录
我在数据库中以分级顺序存储类别和分组。每个类别可能有其他类别和分组,因为它们是儿童。因此,无论何时将分组移到其他类别或分组下,其分类ID都会更新,并且所有子分组的类别ID也应该更新。如何在oracle中更新分层数据结构的所有子级记录
的分组表具有数据如下:
所以,如果我移动分组标识81至一个新的类别编号739720然后,我希望所有的孩子们分组的类别ID也被更新为739720
换句话说,我想选择分层数据结构中所有分组的子记录并更新它们的分类id。
我想在UPDATE之后的数据如下所示。
您可以使用MERGE
声明:
MERGE INTO GROUPING dst
USING (
SELECT ROWID AS rid
FROM GROUPING
START WITH grouping_id = 81
CONNECT BY PRIOR grouping_id = parent_id
) src
ON (dst.ROWID = src.RID)
WHEN MATCHED THEN
UPDATE SET CATEGORY_ID = 739720;
能这样用CONNECT BY – user1614862
实现739720不是分组ID,它是一个分类ID。我只想更新儿童的类别标识,而不是分组标识或父母标识。 – user1614862
@ user1614862更新 – MT0
我可能是第一个指出的是,如果数据模型是正确归你不会需要做到这一点 – APC