| ||||
| Estoy haciendo una transaccion en donde ingreso un archivo en base de datos. El id de ese archivo debería ingresarse luego un una tabla de relación. Pero en ese momento obtengo una excepcion: Cannot add or update a child row: a foreign key constraint fails. Es que en el contexto de una transaccion ese id no existe aun? Que se hace en estos casos entonces?
Código MySQL:
Ver originalCopiar |
| ||||
| Respuesta: foreign key constraint fails en una transaccion Bueno, la respuesta es en realidad simple, pero hay que verla en el contexto de lo que haces: El INSERT que genera el error contiene un valor para una columna que es FK que no existe en la tabla de origen. Es tan sencillo como eso, pero por empezar hay que ver de dónde saca ese dato, y por qué no existe en la tabla.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque) |
| ||||
| Respuesta: foreign key constraint fails en una transaccion Te muestro. Para obtener el proximo ID, utilizo esta consulta:
Código MySQL:
Ver originalCopiar Luego, segun se explica aqui: http://blog.innerlogic.gr/mysql-get-...crement-value/ , obtengo el campo 'Auto_increment'. Finalmente, inserto el pago, y comparo el ultimo id generado con el valor que antes obtuve (solo para mas seguridad. De cualquier manera, en un contexto de transaccion no espero que alguien pueda borrar un registro y traer problemas de id). En fin, si ves mi post original, la primer consulta inserta un item en ClientsFiles, y es ese id autoincremental el que falla en la tabla de relacion. Por eso mi duda original, aun no resuelta. |