Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/03/2012, 12:14
ferminako
 
Fecha de Ingreso: abril-2010
Mensajes: 298
Antigüedad: 14 años, 6 meses
Puntos: 1
update q nose si es posible arroja error:Unknown column 'var_oden' in 'where clause'

tengo una tabla varios que se compone de un campo id , otro fk y otro int llamado orden, cuando se elimina un registro necesito que todos los que tengan un orden mayor, se les reste 1 para reordenarlos y que no queden saltos en la secuencia de orden.

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:
  update varios set Orden=Orden-1 where Orden>var_oden;
Unknown column 'var_oden' in 'where clause'

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