33 lines
787 B
SQL
33 lines
787 B
SQL
DELIMITER $$
|
|
CREATE OR REPLACE DEFINER=`root`@`localhost` PROCEDURE `vn2008`.`unary_update`(v_node INT, v_new_parent INT, v_move bool)
|
|
BEGIN
|
|
/**
|
|
* Cambia el padre de un nodo. Se puede indicar si se quieren mover los hijos.
|
|
* En este caso los hijos pasan al padre del nodo.
|
|
* Si no tiene padre, los hijos pasaran a ser padres.
|
|
*
|
|
* @v_node: Nodo que se quiere mover.
|
|
* @v_new_parent: Padre al que se quiere mover el nodo.
|
|
* @v_move: Se indica si se mueven los nodos.
|
|
**/
|
|
|
|
DECLARE v_parent INT;
|
|
|
|
SELECT parent
|
|
INTO v_parent
|
|
FROM unary
|
|
WHERE id = v_node;
|
|
|
|
IF(v_move = TRUE) THEN
|
|
UPDATE unary
|
|
SET parent = v_parent
|
|
WHERE parent = v_node;
|
|
END IF;
|
|
|
|
UPDATE unary
|
|
SET parent = v_new_parent
|
|
WHERE id = v_node;
|
|
|
|
END$$
|
|
DELIMITER ;
|