salix/db/routines/vn2008/procedures/unary_update.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 ;