• Sábado 21 de Diciembre de 2024, 11:38

Autor Tema:  Creacion de un trigger  (Leído 3093 veces)

The Clairvoyant

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Creacion de un trigger
« en: Martes 3 de Febrero de 2009, 04:47 »
0
Hola! les presento un diagrama de mi base de datos para q me entiendan
h**p://img111.imageshack.us/img111/885/diagrama3cd7.png

esta imagen esta hecha en sql server 2000, claro q ya migre a mysql!!

Ya tengo el trigger en el cual se le resta a la existencia de zapatos dependiendo de la cantidad que haya en detalle_pedido.

Ahora lo que deseo hacer es esto:
Por medio de un trigger llenar la tabla detalle_sucursal. para eso se necesita la info de las tablas pedido y detalle_pedido,
de la tabla pedido se obtendra el dato de id_sucursal
de la tabla detalle_pedido se obtendra el id_zapato, tamano y cantidad

me supongo que iria con un if pero no me da resultados!! Si ya se encuentran los datos de id_sucursal, cod_zapato y tamano, que solo se actualice el campo cantidad, sino que se agregue la informacion completa!

Espero hacerme entender!!  
denme una ayuda! please! lo necesito!!

The Clairvoyant

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Creacion de un trigger
« Respuesta #1 en: Jueves 5 de Febrero de 2009, 02:34 »
0
Hola! les pongo mi tablas!!

 tabla zapatos
cod_zapato(pk), tamano(pk) ,marca, existencia

Tabla sucursal
id_sucursal(pk), sucursal

tabla detalle_sucursal
cod_zapato(pk), tamano(pk), id_sucursal(pk), cantidad. Esta tabla esta relacionada con la tabla zapatos y la tabla sucursal.

tabla pedido
id_pedido(pk), id_sucursal, fecha_pedido. Esta tabla se relaciona con id_sucursal

detalle_pedido
id_pedido   Esta tabla se relaciona con zapatos y pedido!
cod_zapato
tamano
cantidad

Ya poseo el trigger para disminuir la existencia dependiendo de los pedidos! pero lo q no me sale todavia es llenar la tabla detalle_su :hitcomp:   con los datos q se ingresan en pedido (donde se toma el id_sucursal) y en detalle_pedido(en donde se toma el cod_zapato, el tamano y la cantidad) claro! q si las llaves ya se encuentran ingresadas que solo se actualice la cantidad!!

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Creacion de un trigger
« Respuesta #2 en: Jueves 5 de Febrero de 2009, 11:22 »
0
Puedes publicar tu codigo?
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

The Clairvoyant

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Creacion de un trigger
« Respuesta #3 en: Viernes 6 de Febrero de 2009, 01:44 »
0
Cita de: "F_Tanori"
Puedes publicar tu codigo?

Aqui te pongo el code!! claro q la logica de este codigo lo encontre en una pagina web, no se si es prohibido poner estos enlaces o no!

DELIMITER $$

DROP TRIGGER /*!50032 IF EXISTS */ `zapateria`.`disminuir_existencia`$$

CREATE
    /*!50017 DEFINER = 'root'@'localhost' */
    TRIGGER `disminuir_existencia` BEFORE INSERT ON `detalle_producto`
    FOR EACH ROW BEGIN
   declare ep int;
   
   select producto.existencia into ep from producto
   where producto.cod_producto = new.cod_producto;
   
   
   if ep >= new.cantidad then
      update producto set existencia = existencia - new.cantidad
      where producto.cod_producto = new.cod_producto;
      
   else
      set new.id_venta = null;
   end if;
    END;
$$

DELIMITER ;

ahi esta el codigo!! ahora lo que deseo es agarrar el dato id_venta de la tabla pedido y cod_zapato, cantidad de la tabla detalle_pedido.

y con un if me supongo haria la validacion: si se encuentra el cod_zapato y id_sucursal que se actualice la cantidad, sino que haga un insert para poner los valores de cod_zapato, id_sucursal y cantidad!

se puede hacer eso en mysql? espero que siiiii!!