Ver Mensaje Individual
  #6 (permalink)  
Antiguo 16/02/2013, 05:26
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: 17 años, 5 meses
Puntos: 2658
Respuesta: Trigger para insertar

Cita:
Iniciado por wchiquito Ver Mensaje
Hola rey_sant,

Te dejo un ejemplo en sqlfiddle.com que te puede ser útil.

Avísame si tienes dudas.
Para mejor entendimiento del resto de los foristas, esta es la solución propuesta por @wchiquito:

Estructura de datos:
Código MySQL:
Ver original
  1. DROP TABLE IF EXISTS `libro`//
  2.  
  3. CREATE TABLE `libro` (
  4.   `id_libro` int(11) NOT NULL AUTO_INCREMENT,
  5.   `nombre_libro` varchar(50) NOT NULL,
  6.   `stock_libro` int(11) NOT NULL,
  7.   PRIMARY KEY (`id_libro`)
  8. )//
  9.  
  10. /*Data for the table `libro` */
  11.  
  12. insert  into `libro`(`nombre_libro`,`stock_libro`) values ('Libro 1',20)//
  13.  
  14. /*Table structure for table `prestamo` */
  15.  
  16. DROP TABLE IF EXISTS `prestamo`//
  17.  
  18. CREATE TABLE `prestamo` (
  19.   `id_prestamo` int(11) NOT NULL AUTO_INCREMENT,
  20.   `id_usuario` int(11) NOT NULL,
  21.   `id_libro` int(11) NOT NULL,
  22.   `cantidad_prestamo` int(11) NOT NULL,
  23.   PRIMARY KEY (`id_prestamo`),
  24.   KEY `id_libro` (`id_libro`),
  25.   KEY `id_usuario` (`id_usuario`)
  26. )//
  27.  
  28. /*Table structure for table `usuario` */
  29.  
  30. DROP TABLE IF EXISTS `usuario`//
  31.  
  32. CREATE TABLE `usuario` (
  33.   `id_usuario` int(11) NOT NULL AUTO_INCREMENT,
  34.   `nombre_usuario` varchar(50) NOT NULL,
  35.   `apellido_usuario` varchar(50) NOT NULL,
  36.   PRIMARY KEY (`id_usuario`)
  37. )//
  38.  
  39. /*Data for the table `usuario` */
  40.  
  41. insert  into `usuario`(`nombre_usuario`,`apellido_usuario`) values ('Nombre 1','Apellido 1')//
  42.  
  43. /* Trigger structure for table `prestamo` */
  44.  
  45. /*!50003 DROP TRIGGER*//*!50032 IF EXISTS */ /*!50003 `actualiza_stock` *///
  46.  
  47. /*!50003 CREATE TRIGGER `actualiza_stock` AFTER INSERT ON `prestamo` FOR EACH ROW BEGIN
  48.     UPDATE libro SET stock_libro = stock_libro - new.cantidad_prestamo
  49.     WHERE libro.id_libro = new.id_libro;
  50. END *///
  51.  
  52. INSERT INTO `prestamo` (`id_usuario`, `id_libro`, `cantidad_prestamo`) VALUES (1, 1, 3);

Verificacion:
Código MySQL:
Ver original
  1. SELECT * FROM `usuario`;
  2. SELECT * FROM `libro`;
  3. SELECT * FROM `prestamo`;

Es conveniente que las soluciones sean posteadas directamente en el foro, y no colocadas en otros sites. Es parte del sentido de FDW.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)