Ver Mensaje Individual
  #6 (permalink)  
Antiguo 27/06/2008, 18:04
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: Select dentro de insert

Antede de meternos en camisa de once varas (vieja expresión), hay que tener claro un pequeño problema:
- LAST_INSERT_ID(), devuelve el último valor de un campo autoincremental afectado por un INSERT. No mantiene su valor entre dos ejecuciones de sentencias, por más que las mismas sean secuenciales e inmediatas.
- Si se realizan un conjunto de inserciones en la misma operación (por ejemplo, en un INSERT INTO ... SELECT ... FROM ...), devuelve solamente el valor del primer registro insertado. El resto no se recupera. Esto implica que la operación debe hacerse registro a registro.
- Por su misma volatilidad, la información es fragil. El mejor uso de LAST_INSERT_ID() se encuentra en los store procedures.

¿Cómo te afecta?:
Si has hecho un insert a la tabla TBL_PREGUNTA, LAST_INSERT_ID() contiene X, pero al hacer el siguiente insert a TBL_PREGUNTA_ITEM, el valor se pierde. Pasa a valer cero.

En principio me parece que la solución estará implementando triggers, pero para darte alguna solución coherente tengo que perguntarte: ¿Cómo es la secuencia de ingreso de datos? Cómo se componen y relacionan la stablas?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)