Si alguna vez intentando borrar un registro de una base de datos Oracle y recibes el siguiente error:
Informe de error:
Error SQL: ORA-02292: restricción de integridad (USUARIO_DB.FK_MAN) violada - registro secundario encontrado
02292. 00000 - "integrity constraint (%s.%s) violated - child record found"
*Cause: attempted to delete a parent key value that had a foreign
dependency.
*Action: delete dependencies first then parent or disable constraint.
La solución pasa por encontrar el registro hijo. Para ello puedes lanzar la siguiente consulta:
Con esta consulta sabrás que tabla esta involucrada. Pero para poder saber que columnas son las que se encuentran involucradas, usa la siguiente consulta:
SELECT OWNER, CONSTRAINT_NAME, constraint_type, TABLE_NAME, r_owner, r_constraint_name FROM all_constraints WHERE OWNER='USUARIO_DB' AND CONSTRAINT_NAME='FK_MAN';
Con esta consulta sabrás que tabla esta involucrada. Pero para poder saber que columnas son las que se encuentran involucradas, usa la siguiente consulta:
SELECT ac.owner AS left_owner, ac.constraint_name AS left_name, ac.table_name AS left_table, acc.column_name AS left_column, acc.position AS left_position, acr.owner AS right_owner, acr.constraint_name AS right_name, acr.table_name AS right_table, accr.column_name AS right_column, accr.position AS right_position FROM all_constraints ac JOIN all_cons_columns acc ON ac.constraint_name=acc.constraint_name JOIN all_constraints acr ON ac.r_constraint_name=acr.constraint_name JOIN all_cons_columns accr ON acr.constraint_name=accr.constraint_name WHERE ac.owner='USUARIO_DB' AND ac.constraint_name='FK_MAN';
Ahora ya tienes la información para borrar el contenido de la tabla relacionada:
"LEFT_TABLE" y LEFT_COLUMN
Ejecuta la sentencia Delete de la relación:
DELETE FROM LEFT_TABLE WHERE LEFT_COLUMN= 'ID_RELACIONADO';
Ahora ya puedes borrar el registro de la tabla principal
GRACIAS, ME AYUDO MUCHO LA INFORMACIO
ResponderEliminarSolucionado enseguida, con la comprobacion de la select. Muchas gracias
ResponderEliminarExcelente, me salvaste.
ResponderEliminarexcelente!!!! recien empiezo con Oracle y muy buen dato para tener
ResponderEliminarMuchas gracias por la información, me sirvió. Saludos.
ResponderEliminarno puedo resolver que desgracia..
ResponderEliminarme ayudó bastante, muchas gracias
ResponderEliminarEXELENTE INFORMACION
ResponderEliminarExcelente info, me sirvio bastante
ResponderEliminarMuchas gracias los scrip me sirvieron estupendamente.
ResponderEliminar