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

Clave primaria con dos campos con autoincremento que se reinicie por campo

Estas en el tema de Clave primaria con dos campos con autoincremento que se reinicie por campo en el foro de Mysql en Foros del Web. No sabia como explicarlo en el titulo con poco espacio, así que aquí lo explico mejor. Tengo dos campos primarios, ID1 e ID2. ID1 lo ...
  #1 (permalink)  
Antiguo 09/12/2008, 05:51
 
Fecha de Ingreso: septiembre-2008
Mensajes: 29
Antigüedad: 15 años, 7 meses
Puntos: 0
Clave primaria con dos campos con autoincremento que se reinicie por campo

No sabia como explicarlo en el titulo con poco espacio, así que aquí lo explico mejor.

Tengo dos campos primarios, ID1 e ID2.
ID1 lo inserto con el valor que yo quiera e ID2 tiene un autoincremento. Lo que quiero es que para cada valor de ID1 reinice el autoincremento de tal forma:
ID1 ID2
1 1
1 2
2 1
2 2
2 3
1 3
3 1

En tablas del tipo myISAM funciona perfectamente seleccionado como autoincremento ID2 pero eso no pasa con las InnoBD y puesto que necesito claves foráneas me veo obligado a usar este tipo de bases de datos.
Alguna solución?
  #2 (permalink)  
Antiguo 10/12/2008, 11:08
 
Fecha de Ingreso: septiembre-2008
Mensajes: 29
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Clave primaria con dos campos con autoincremento que se reinicie por campo

Alguna forma de emularlo?
La alternativa que se me ocurre es obtener el ultimo dato insertado con el mismo ID1 que el que voy a insertar y sumarle 1 al ID2 que tenga, pero tendría que hacer dos consulta (obtener ultimo dato, insertar dato).
Alguna forma de automatizar o algo con una sola consulta esto¿?
  #3 (permalink)  
Antiguo 10/12/2008, 11:21
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, 5 meses
Puntos: 2658
Respuesta: Clave primaria con dos campos con autoincremento que se reinicie por campo

No puedes usar columnas AUTO_INCREMENT, porque estas sólo pueden usarse como PK y una sola por tabla. Como tales, no te admiten poner dos columnas con incrementos automáticos, ni tampoco una cuyo valor se repita.
Puedes gestionarlo:
1) Por fuera de la base, creando los valores en la aplicación (asunto de programación, no de bases de datos).
2) Usando un TRIGGER, eso exige que tengas instalado el MySQL 5.0 o superior.

¿Qué eliges?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 11/12/2008, 00:53
 
Fecha de Ingreso: septiembre-2008
Mensajes: 29
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Clave primaria con dos campos con autoincremento que se reinicie por campo

Trigger, ahora bien, no tengo ni zorra de que son ni como se usan xD
Alguna orientación de como hacerlo me vendría de fábula.
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 01:40.