2024-01-15 11:31:03 +00:00
|
|
|
DELIMITER $$
|
2024-02-28 07:23:58 +00:00
|
|
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn`.`balanceNestTree_addChild`(
|
|
|
|
vSelfFather INT,
|
|
|
|
vName VARCHAR(45)
|
2024-01-15 11:31:03 +00:00
|
|
|
)
|
|
|
|
BEGIN
|
2024-02-28 07:23:58 +00:00
|
|
|
DECLARE vTable VARCHAR(45) DEFAULT util.quoteIdentifier('balanceNestTree');
|
|
|
|
DECLARE vLeft INT;
|
2024-01-15 11:31:03 +00:00
|
|
|
|
2024-02-28 07:23:58 +00:00
|
|
|
CREATE OR REPLACE TEMPORARY TABLE tAux
|
|
|
|
SELECT 0 lft;
|
2024-01-15 11:31:03 +00:00
|
|
|
|
|
|
|
EXECUTE IMMEDIATE CONCAT(
|
2024-02-28 07:23:58 +00:00
|
|
|
'UPDATE tAux
|
2024-01-15 11:31:03 +00:00
|
|
|
SET lft = (SELECT lft
|
|
|
|
FROM ', vTable,
|
|
|
|
' WHERE id = ?)')
|
2024-02-28 07:26:17 +00:00
|
|
|
USING vSelfFather;
|
2024-01-15 11:31:03 +00:00
|
|
|
|
2024-02-28 07:23:58 +00:00
|
|
|
SELECT lft INTO vLeft FROM tAux;
|
2024-01-15 11:31:03 +00:00
|
|
|
|
|
|
|
EXECUTE IMMEDIATE CONCAT(
|
|
|
|
'UPDATE ', vTable, '
|
|
|
|
SET rgt = rgt + 2
|
|
|
|
WHERE rgt > ?
|
|
|
|
ORDER BY rgt DESC')
|
2024-02-28 07:23:58 +00:00
|
|
|
USING vLeft;
|
2024-01-15 11:31:03 +00:00
|
|
|
|
|
|
|
EXECUTE IMMEDIATE CONCAT(
|
|
|
|
'UPDATE ', vTable, '
|
|
|
|
SET lft = lft + 2
|
|
|
|
WHERE lft > ?
|
|
|
|
ORDER BY lft DESC')
|
2024-02-28 07:23:58 +00:00
|
|
|
USING vLeft;
|
2024-01-15 11:31:03 +00:00
|
|
|
|
|
|
|
EXECUTE IMMEDIATE CONCAT(
|
|
|
|
'INSERT INTO ', vTable, ' (name, lft, rgt)
|
|
|
|
VALUES(?, ? + 1, ? + 2)')
|
2024-02-28 07:29:12 +00:00
|
|
|
USING vName,
|
2024-02-28 07:23:58 +00:00
|
|
|
vLeft,
|
|
|
|
vLeft;
|
|
|
|
|
|
|
|
DROP TEMPORARY TABLE tAux;
|
2024-01-15 11:31:03 +00:00
|
|
|
END$$
|
|
|
|
DELIMITER ;
|