Ver Mensaje Individual
  #4 (permalink)  
Antiguo 19/08/2010, 22:20
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: [/B] Ayuda ... porfavor PRIMARY KEY[/B]

Me parece que este tema ya se trató aquí, pero evidentemente no se entendió la respuesta...
Lo que normalmente se hace:
Código MySQL:
Ver original
  1. /***********************************************************************************************************/
  2.  
  3. DROP TABLE IF EXISTS `producto`;
  4. CREATE TABLE  `producto` (
  5.   `numprod` int(20) unsigned NOT NULL,
  6.   `descprod` varchar(20) NOT NULL,
  7.   `preuniprod` int(20) unsigned NOT NULL,
  8.   PRIMARY KEY  (`numprod`)
  9.  
  10. /***********************************************************************************************************/
  11.  
  12. DROP TABLE IF EXISTS `proveedor`;
  13. CREATE TABLE  `proveedor` (
  14.   `numprov` int(20) unsigned NOT NULL,
  15.   `nomprov` varchar(20) NOT NULL,
  16.   `dirprov` varchar(20) NOT NULL,
  17.   PRIMARY KEY  (`numprov`)
  18.  
  19. /***********************************************************************************************************/
  20.  
  21. DROP TABLE IF EXISTS `pedido`;
  22. CREATE TABLE  `pedido` (
  23.   `numped` int(20) unsigned NOT NULL,
  24.   `numprov` int(20) unsigned NOT NULL,
  25.   `mtotlped` int(20) unsigned NOT NULL,
  26.   PRIMARY KEY  (`numped`),
  27.   KEY `numprov` (`numprov`),
  28.   CONSTRAINT `FK_pedido_proveedor` FOREIGN KEY (`numprov`)
  29.   REFERENCES `proveedor` (`numprov`) ON DELETE CASCADE ON UPDATE CASCADE
  30.  
  31. /***********************************************************************************************************/
  32.  
  33. DROP TABLE IF EXISTS `pedidoprod`;
  34. CREATE TABLE  `pedidoprod` (
  35.   `numped` int(20) unsigned NOT NULL,
  36.   `subitemped` int(20) unsigned NOT NULL,
  37.   `numprod` int(20) unsigned NOT NULL,
  38.   `cantped` int(20) unsigned NOT NULL,
  39.   `subtlprod` int(20) unsigned NOT NULL,
  40.   PRIMARY KEY  USING BTREE (`numped`,`subitemped`),
  41.   KEY `numprod` (`numprod`),
  42.   CONSTRAINT `FK_pedidoprod_prod` FOREIGN KEY (`numprod`)
  43.   REFERENCES `producto` (`numprod`) ON DELETE CASCADE ON UPDATE CASCADE,
  44.   CONSTRAINT `FK_pedidoprod_nroped` FOREIGN KEY (`numped`)
  45.   REFERENCES `pedido` (`numped`) ON DELETE CASCADE ON UPDATE CASCADE
  46. /***********************************************************************************************************/
  47. /* Y para completar.. el TRIGGER que puede numerar los subitems, si po ocio no quieres manejarlo tu mismo. */
  48. /***********************************************************************************************************/
  49. DROP TRIGGER IF EXISTS subitempedido;
  50. DELIMITER $$
  51. CREATE TRIGGER subitempedido BEFORE INSERT
  52. ON pedidoprod
  53.         IF(SELECT MAX(subitemped) FROM pedidoprod WHERE numped = NEW.numped) IS NULL THEN
  54.       SET NEW.subitemped = 1;
  55.     ELSE
  56.       SET NEW.subitemped=(SELECT MAX(subitemped) FROM pedidoprod WHERE numped = NEW.numped) + 1;
  57.     END IF;
  58. END$$
  59.  
  60. 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)