![]() |
Error al eliminar una relación
Hola gente!
Esta vez los molesto con lo siguiente: Estoy utilizando Oracle 8i, donde tengo dos tablas en una relación Maestro detalle. El detalle se compone de tres campos que forman una clave primaria, es decir: -------- Tabla A -------- | | A -------- --------- Tabla B >---------------- Tabla C -------- ---------- V | | -------- Tabla D -------- Al tratar de un registro padre, ocurre el siguinte error:
¿Cómo puedo efectivamente borrar el padre la relación sin caer en este error? La idea es seguir conservando el registro de la relación intacto. Muchas Gracias! |
Si no he entendido mal, quieres hacer lo que justamente se intenta evitar cuando se define una relación.
Al relacionar A y B defines los registros de B (detalle) que están apuntando a un registro de A (maestro). Al definir esa relación, como añadido se imposibilita que se borre un registro de A si tiene registros de B que apuntan a él. Si eso se permitiese, dejarías registros de B que apuntan a "nadie", ya que has borrado siu registro relacionado en A. Lo que se suele hacer normalmente: (1) Borrar A y sus registros de B, puesto que no tiene sentido que existan. (2) Borrar A, pero antes eliminar el campo de B que apunta a A (dejandolo nulo, por ejemplo). No es muy habitual, pero a veces se hace por ejemplo, si interesa mantener los registros de B por temas de históricos o por temas de seguridad o trazabilidad. (3) No permitir borrar A y de alguna manera (campo extra) deshabilitarlo/ocultarlo a todos los efectos del programa. Dependiendo de tus necesidades, puedes optar por alguna de estas soluciones. |
Gracias!
Gracias Neftali!
Creo que lo que mas me conviene es la 2) por ahora! Saludos! |
Si quieres utilizar la 2) y quieres que el sistema lo haga solo, cuando te definas la foreign key utiliza ON DELETE SET NULL al final de la definición.
|
| La franja horaria es GMT +2. Ahora son las 14:55:17. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi