删除行并调整序列

时间:2016-06-09 22:01:04

标签: mysql sql plsql

我需要帮助下面的SQL查询 -

DECLARE
    cnt           NUMBER;
    tempid          NUMBER;
    mysection      VARCHAR2 (200);

BEGIN
    tempid          := 160645;
    mysection       := 'Sub-sub section A4';

    FOR x IN (SELECT * 
              FROM table1
              where templateID = tempID)
    LOOP
        SELECT COUNT (*)
        INTO   cnt
        FROM   table1
        where templateID = tempID;

        IF (cnt > 0) THEN

            UPDATE table1
            SET    parentid   = parentid - 1
              WHERE TO_NUMBER (parentid) > TO_NUMBER (x.parentid) and section = mysection;

            UPDATE table1
            SET    childid  = childid - 1
            WHERE  TO_NUMBER (childid) > TO_NUMBER (x.parentid) and section = mysection;

           delete from table1 where tmplateid = tmpid and section = mysection;

        END IF;

    END LOOP;

    COMMIT;

END;
.
/

这是我想要做的。我有一个树格式的数据。为了进一步解释,在屏幕截图中,您可以看到"主要部分" parentId为1,它是主要部分下面部分的子ID,即"子部分"。 "分节"本身的parentID为2,它是以下部分的子ID,"子部分",即子子部分1到子子部分5.

数据表是这样的结构 -

  • Col 1是templateID,它是包含的模板的ID 所有部分。
  • Col 2是所有部分的parentID。 ParentID是序号
  • Col 3是所有部分的子女
  • 第4栏是所有部分的文字

我想要做的是删除" Sub-sub部分A5"并自动调整ParentID序列号和childID列号。我在附加的数据集中提供了示例。 enter image description here

0 个答案:

没有答案