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 ;