Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Trigger de Sql server a MySql

Estas en el tema de Trigger de Sql server a MySql en el foro de Mysql en Foros del Web. Hola, tengo problemas queriendo pasar este trigger a mysql (que lo tenia en sql server), pero por problemas que no entiendo debido a que soy ...
  #1 (permalink)  
Antiguo 27/07/2013, 00:19
 
Fecha de Ingreso: julio-2013
Mensajes: 18
Antigüedad: 10 años, 9 meses
Puntos: 1
Trigger de Sql server a MySql

Hola, tengo problemas queriendo pasar este trigger a mysql (que lo tenia en sql server), pero por problemas que no entiendo debido a que soy principiante, y despues de ver varias paginas, no logro la transformacion.

Bueno, el trigger es el siguiente:
Código SQL:
Ver original
  1. CREATE TRIGGER tg_insertarVenta
  2. ON productoVenta
  3. FOR INSERT
  4. AS
  5.     UPDATE producto SET pro_existencia = pro_existencia - (SELECT pv_cantidad FROM inserted)
  6. WHERE(SELECT pv_producto FROM inserted)=pro_codigo;

Espero que si me puedan ayudar. Gracias.

Última edición por gnzsoloyo; 27/07/2013 a las 04:34
  #2 (permalink)  
Antiguo 27/07/2013, 04:47
Avatar de 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, 4 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)

Etiquetas: insert, select, server, sql, trigger
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:25.