Ver Mensaje Individual
  #4 (permalink)  
Antiguo 28/03/2014, 19:25
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Uso de Old en un Trigger

Ajá...

¿Y el SET, dónde lo pusiste?

Te recomiendo usar alguna herramienta con analizador sintáctico, como por ejemplo MySQL Workbench.
Te ahorrarás errores básicos.

Código MySQL:
Ver original
  1. DELIMITER $$
  2.  
  3. CREATE TRIGGER farmacia.TgVentasAct BEFORE UPDATE ON farmacia.Ventas
  4.  
  5.         DECLARE Devuelto INT;
  6.         SET Devuelto=Old.Cantidad-New.Cantidad;
  7.         UPDATE Inventario SET Existencia=Existencia+Devuelto WHERE idProducto=New.Id_Producto;
  8.         INSERT INTO Movimientos (idTipoMov,IdProducto,Fecha,Cantidad) VALUES (5,New.Id_Producto,NOW(),New.Cantidad);
  9. END$$
  10.  
  11. DELIMITER ;
Además, no debes confundir los apóstrofos (') con los acentos agudos (`).
Los primeros se usan para cadenas de texto, los segundos para nombres de objetos como bases, tablas, columnas, etc. El nombre de una base no se pone entre apóstrofos.
Mal:
Código MySQL:
Ver original
  1. USE 'Farmacia'
Bien:
Código MySQL:
Ver original
  1. USE Farmacia
Bien:
Código MySQL:
Ver original
  1. USE `Farmacia`
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)