home wiki.fukuchiharuki.me
Menu

  • 追加された行はこの色です。
  • 削除された行はこの色です。
*参照 [#pa70228e]

*更新 [#xe16fc23]
**リーフを追加する [#q27c73c3]
-:objectを:target下に
 UPDATE 
   02_DIRECTORY Target
     INNER JOIN
   02_DIRECTORY Shift
     ON 
       Shift.R >= Target.R
 SET
   Shift.R = Shift.R + 2
 , Shift.L = CASE WHEN Shift.L > Target.L 
               THEN Shift.L + 2 
               ELSE Shift.L 
             END
 WHERE
   Target.DIRECTORY_ID = :target;
 
 INSERT INTO 02_DIRECTORY
 SELECT :object, R-2 AS L, R-1 AS R FROM 02_DIRECTORY WHERE DIRECTORY_ID = :target;

**部分木を移動する [#i6b4bcc8]
-:objectを:target下に
 UPDATE 
   02_DIRECTORY Target
     INNER JOIN
   02_DIRECTORY Shift
     ON 
       Shift.R >= Target.R
     INNER JOIN
   02_DIRECTORY Object
     ON 
       Object.DIRECTORY_ID = :object
 SET
   Shift.R = Shift.R + (Object.R - Object.L + 1)
 , Shift.L = CASE WHEN Shift.L > Target.L 
               THEN Shift.L + (Object.R - Object.L + 1)
               ELSE Shift.L 
             END
 WHERE
   Target.DIRECTORY_ID = :target;
 
 UPDATE 
   02_DIRECTORY Target
     INNER JOIN
   02_DIRECTORY Object
     ON 
       Object.DIRECTORY_ID ='!'
     INNER JOIN
   02_DIRECTORY Shift
     ON 
       Shift.L >= Object.L
       AND
       Shift.R <= Object.R
 SET
   Shift.L = Target.R - (Object.R - Object.L + 1)
 , Shift.R = Target.R - 1
 WHERE
   Target.DIRECTORY_ID = :target;