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

Conflicto con Autoincrement

Estas en el tema de Conflicto con Autoincrement en el foro de Mysql en Foros del Web. Buenas amigos. Necesito su ayuda porque no me funciona bien el auto increment en la tabla "detalle_producto". Cuando intento colocarle los valores del campo "idProducto" ...
  #1 (permalink)  
Antiguo 18/02/2015, 06:24
 
Fecha de Ingreso: abril-2012
Ubicación: Argentina
Mensajes: 215
Antigüedad: 12 años
Puntos: 2
Conflicto con Autoincrement

Buenas amigos.
Necesito su ayuda porque no me funciona bien el auto increment en la tabla "detalle_producto".
Cuando intento colocarle los valores del campo "idProducto" de la tabla "producto" al campo "idProducto" de la tabla "detalle_producto" me salta 2 o más registros autoincrementales de esta última tabla en el campo "idDetalle".

¿Por qué será? ¿Cómo se podrá solucionar?

Estos son mis datos:

Código SQL:
Ver original
  1. -- -----------------------------------------------------
  2. -- Table `biofusion_admin`.`producto`
  3. -- -----------------------------------------------------
  4. CREATE TABLE IF NOT EXISTS `mi_base_datos`.`producto` (
  5.   `idProducto` INT NOT NULL AUTO_INCREMENT,
  6.   `idParent` INT NOT NULL,
  7.   `idPagina` INT NOT NULL,
  8.   `defCategoria` VARCHAR(9) NULL,
  9.   `nombreProducto` VARCHAR(50) NULL,
  10.   `descripcionProducto` VARCHAR(200) NULL,
  11.   `precioProducto` DECIMAL(6,2) NULL,
  12.   `stockProducto` INT NULL,
  13.   `imagenProducto` VARCHAR(150) NULL,
  14.   `fechaProducto` VARCHAR(16) NULL,
  15.   PRIMARY KEY (`idProducto`))
  16. ENGINE = InnoDB;
  17.  
  18.  
  19. -- -----------------------------------------------------
  20. -- Table `biofusion_admin`.`detalle_pedido`
  21. -- -----------------------------------------------------
  22. CREATE TABLE IF NOT EXISTS `mi_base_datos`.`detalle_pedido` (  
  23.   `idEstadoProductoPedido` INT NULL DEFAULT 1,
  24.   `idDetalle` INT NOT NULL AUTO_INCREMENT,
  25.   `cantProd` INT NULL,
  26.   `idProducto` INT NULL,
  27.   `infoProd` VARCHAR(50) NULL,
  28.   `subTotal` DECIMAL(6,2) NULL,
  29.   PRIMARY KEY (`idDetalle`),
  30.   CONSTRAINT `fk_producto_pedido_pedido1`
  31.     FOREIGN KEY (`idPedido`)
  32.     REFERENCES `mi_base_datos`.`pedido` (`idPedido`)
  33.     ON DELETE CASCADE
  34.     ON UPDATE CASCADE,
  35.   CONSTRAINT `fk_producto_pedido_estado_producto_pedido1`
  36.     FOREIGN KEY (`idEstadoProductoPedido`)
  37.     REFERENCES `mi_base_datos`.`estado_producto_pedido` (`idEstadoProductoPedido`)
  38.     ON DELETE NO ACTION
  39.     ON UPDATE NO ACTION,
  40.   CONSTRAINT `fk_detalle_pedido_producto1`
  41.     FOREIGN KEY (`idProducto`)
  42.     REFERENCES `mi_base_datos`.`producto` (`idProducto`)
  43.     ON DELETE NO ACTION
  44.     ON UPDATE NO ACTION)
  45. ENGINE = InnoDB;
  46.  
  47. CREATE INDEX `fk_producto_pedido_pedido1_idx` ON `mi_base_datos`.`detalle_pedido` (`idPedido` ASC);
  48.  
  49. CREATE INDEX `fk_producto_pedido_estado_producto_pedido1_idx` ON `mi_base_datos`.`detalle_pedido` (`idEstadoProductoPedido` ASC);
  50.  
  51. CREATE INDEX `fk_detalle_pedido_producto1_idx` ON `mi_base_datos`.`detalle_pedido` (`idProducto` ASC);
  52.  
  53.  
  54. SET SQL_MODE=@OLD_SQL_MODE;
  55. SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
  56. SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

Mi consulta:

Código SQL:
Ver original
  1. INSERT INTO detalle_pedido (idProducto)
  2. SELECT idProducto                              
  3. FROM producto;

Última edición por gnzsoloyo; 18/02/2015 a las 06:59
  #2 (permalink)  
Antiguo 18/02/2015, 07:07
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: Conflicto con Autoincrement

Cita:
Cuando intento colocarle los valores del campo "idProducto" de la tabla "producto" al campo "idProducto" de la tabla "detalle_producto" me salta 2 o más registros autoincrementales de esta última tabla en el campo "idDetalle".
Si el tema es que te "salta" en el sentido de que ciertos autoincrementales no aparecen, eso podría deberse a que algunos registros no se insertan por algun problema, pero el proceso de incrementacion es anterior, por lo que cualquier insercion que falle de todos modos genera el AI no usado.
Es un comportamiento normal e irrelevante, aunque resulte algo extraño, propio del modo en que MySQL está programado.
Si te fijas en el manual de referencia, verás que eso es lo que explica respecto al uso de AI.
En todo caso, lo único interesante sería saber por qué ciertas inserciones no ocurren, cuando el campo en cuestion es en realidad nulable, lo que podría llevar a pensar que hay defectos de datos.
De todos modos, la continuidad incremental es irrelevante para el uso de consultas. Si lo que quieres es una numeración esecuencial perfecta por cuestiones de visualización, eso se puede hacer de otro modo mucho mas sencillo.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 18/02/2015, 20:34
 
Fecha de Ingreso: abril-2012
Ubicación: Argentina
Mensajes: 215
Antigüedad: 12 años
Puntos: 2
Respuesta: Conflicto con Autoincrement

Muchas gracias por responder gnzsoloyo. No le encontré solución, pero tienes razón que es irrelevante.

Saludos!!

Etiquetas: bases-de-datos-general, bd, consulta+sql, php, sql
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 08:14.