Ver Mensaje Individual
  #6 (permalink)  
Antiguo 12/08/2009, 05:28
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: fallo en trigger

Si el TRIGGER o el STORED ROCEDURE tienen una sola línea, no hay problema.
En el caso del PhpMyAdmin, en la ventana de SQL tienes abajo donde colocar el simbolo de delimitador, es un TextBox que se usa para eso, en el que habitualmente aparece el ";" normal.
Lo que debes hacer es escribir todo el código así:
Código sql:
Ver original
  1. CREATE TRIGGER tvp_scon BEFORE INSERT ON pos_tpv
  2.  FOR EACH ROW BEGIN
  3. IF NEW.did = 0 THEN
  4.   UPDATE pos_stock P SET cta =cta-NEW.cta WHERE P.pid = NEW.pid AND P.`LOCAL` = NEW.`LOCAL`;
  5. ELSEIF NEW.did = 1 THEN
  6.   UPDATE pos_stock P SET P.cta =P.cta+NEW.cta WHERE P.pid = NEW.pid AND P.`LOCAL` = NEW.`LOCAL`;
  7. END IF;
  8. END&&
Y en el TextBox de Delimitador poner "&&"

Además, si puede haber un par de errores, ya que esto: (pid, LOCAL) = (NEW.pid, NEW.LOCAL), hasta lo que se, no es válido en MySQL, y además estás usando palabras reservadas como nombres de campo, lo que da lugar a errores.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)