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?
INSERT INTO ClientsFiles ( clientf_id, user_id, clientf_filename, clientf_datetime ) VALUES ('', 16, 'ComisionesFrances201105.xls', NOW() ) obtengo el clientf_id (ultimo ingresado) INSERT INTO Clients (client_CISid, client_fname, client_lname, client_doc_type, client_cuit, client_doc_number, client_bank_branch, client_num_acount, client_cbu, client_bank_pref) VALUES ('80400033','Sacari','Lidia','49','2147483647','93741388','106','0151318','0 ',1),('80400039','Semkina','Tatiana','49','2147483647','93891202','0','0','2650000500420019879769',1),('80400172','Dukhovska','Larysa','49','2147483647','93763108','0','0','0720037388000035893354',1) etc... INSERT INTO Clients_ClientsFiles (clientf_id, client_id) VALUES ('*** clientf_id ***', '4626'),('2', '4627'),('2', '4629') etc... Error Code: 1452 Cannot add OR UPDATE a child row: a FOREIGN key CONSTRAINT fails (`tiens`.`Clients_ClientsFiles`, CONSTRAINT `Clients_ClientsFiles_ibfk_2` FOREIGN KEY (`clientf_id`) REFERENCES `ClientsFiles` (`clientf_id`) ON DELETE CASCADE)
RESPUESTAS:
1. 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.
2. Te muestro. Para obtener el proximo ID, utilizo esta consulta:
Código MySQL:
Ver originalCopiar
SHOW TABLE STATUS LIKE 'ClientsFiles'
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.

