Ver Mensaje Individual
  #2 (permalink)  
Antiguo 27/07/2013, 04:47
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: Trigger de Sql server a MySql

Puede haber varios problemas, pero algunos de ellos no se pueden ver completamente sin ver el contexto de ejecución.
De todos modos hay cosas medio raras, porque ¿para qué defines un trigger sobre un update en la tabla productoVenta, si nunca se invoca a los valores de esa tabla?
¿Por qué operas sobre otras ttablas con acciones que podrías hacer directamente en ellas?
Por otro lado, no existe un objeto, evento, o pseudovariable denominado "inserted" en MySQL. No te olvides que el SQL procedural no está estandarizado, y lo que hagas en un DBMS puede no existir en otro.
Yo te sugeriría que antes de escribir este tipo de rutinas, primero te olvides de lo aprendid , y leaslos manuales de cada DBMS como si fuese la primera vez, escribiendo los ejemplos de ellos sin pensar en "cómo lo haría en...".

En MySQL, al igual que otros DBMS, se puede acceder a los datos entrantes sólo por medio de las pseudovariables NEW (o a los salientes con OLD, pero no en el INSERT).
Bueno, voy a suponer que pvcantidad y pvproducto son valores que están entrando en la acción de insertar, por lo que podría ser:
Código SQL:
Ver original
  1. DELIMITER $$
  2.  
  3. DROP TRIGGER IF EXISTS tg_insertarVenta $$
  4. CREATE TRIGGER  tg_insertarVenta ON productoVenta
  5. FOR INSERT
  6. BEGIN
  7.     UPDATE producto SET pro_existencia = pro_existencia - NEW.pv_cantidad
  8.         WHERE pro_codigo = NEW.pv_producto;
  9. END$$
  10.  
  11. DELIMITER ;

Ojo: Este script está definido para ser cargado por consola. Si lo haces de otro modo debes quitarle las sentencias "DELIMITER".
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)