relaciones entre tablas MySQL
Hola de nuevo! tengo otra pequeña duda:
deseo lanzar una excepcion cuando pretendo Eliminar algun registro relacionado con otra tabla de una base de datos, tengo lo siguiente:
es un listado en una tabla con diferentes nombres de areas de una institucion o una empresa, tengo 3 botones uno agregar, modificar, eliminar, y en el de eliminar tengo el siguiente codigo:
- Inicie sesión o regístrese para enviar comentarios
Quizás el método eliminarArea
Quizás el método
no esté re-lanzando esa excepción (con
y/o
) si es que deseas atraparla en ese punto.
Exception
no caches Exception. Especifica la excepción que vas a manejar, no algo tan general.
relacion entre tablas
amm pues mi metodo eliminar area esta asi:
Evitar la excepción
En mi opinión, creo que es mejor verificar que un registro no esté relacionado con otro antes de eliminarlo (de acuerdo con el requerimiento de la OP). Naturalmente eso implicaría una consulta adicional.
Si existe la posibilidad de evitar la excepción, ese debería ser el camino a seguir.
¡Por si sirve de algo!
~~~
Método transaccional
Te aconsejaría para que tu registro no se elimine, este método al igual que los otros estén dentro de un bloque transaccional, si el bloque lanza una excepción podrás hacer un rollback a toda la transacción, en caso contrario el commit. Con esto aseguraras que los datos de la base de datos mantenga la integridad.
Es por llaves foraneas
Obviamente el erro es por que el registro que deseas eliminar esta relacionado por medio de una llave foranea (en otra tabla),
Generalmente para eliminar el registro se necesitan eliminar la dependencia o relacion (E-R), para que no este vinculado con otros registros,
de igual manera podrías de acuerdo a tus necesidades tener una bandera de eliminado (eso es lo que yo he hecho alguna vez) como booleano (tyint(1) en mysql) para evitar esos errores y guardar el registro.
Saludos