Ej:
1-1-1
2-2-2
3-3-3
Borro el id=1 por lo tanto:
- El 2-2-2 pasa a ser 2-2-1 y el 3-3-3 pasa a ser el 3-3-2.
Para ello tengo una variable var_orden que tiene el orden del registro a borrar en nuestro caso valdria1.
Mi pregunta es puedo hacer este update o Orden=Orden-1 no es valido , y deberia primero obtener el orden de cada registro para luego por mediod e una variable decrementarlo? Y en cualquier caso, porque me devuelve ese error si var_orden es una variable?
Código:
Unknown column 'var_oden' in 'where clause'update varios set Orden=Orden-1 where Orden>var_oden;
Codigo completo sp:
Código:
DELIMITER $$ CREATE DEFINER=`root`@`localhost` PROCEDURE `VariosBorrar`(out res int, in in_nombre varchar(45)) BEGIN DECLARE existe INT; declare var_orden int; SET existe = 0; SELECT idVarios INTO existe FROM varios WHERE Articulos_idArticulos=(select idArticulos from articulos where Nombre=in_nombre); IF (existe > 0) THEN /* Reordeno los que tienen un mayor orden, para ellos selecciono el orden del reg a borrar, la guardo en var_orden, y le doy un orden=0 , para poder reordenar las demas puesto que el Orden es Unique*/ select Orden into var_orden from varios where idVarios=existe; update varios set Orden=0 where Idvarios=existe; update varios set Orden=Orden-1 where Orden>var_oden; delete from varios where idVarios=existe; SET res = 0; ELSE SET res = 1; END IF; END