domingo, 29 de enero de 2012

Tablas–Integridad Referencial

Retomando el tema de las Tablas y las restricciones es bueno recordar de que la Integridad Referencial es algo importante en las Bases de Datos pero a veces provoca algunos problemas como por ejemplo, cuando intentamos eliminar un registro de una tabla principal que esta relacionado con uno varios registros de una tabla secundaria, esto es correcto que suceda para no perder la integridad en la información, pero cuando necesitemos hacer esto podemos utilizar los siguientes métodos para solucionar nuestros inconvenientes, para esto Oracle nos da dos soluciones que podemos agregar después de la cláusula REFERENCES

 

ON DELETE SET NULL Coloca nulos en todas las claves secundarias de los registros que tengan relación con la clave primaria que va a ser eliminada.

ON DELETE CASCADE Borra todos los registros con claves secundarias que estén relacionadas con la clave principal que va a ser eliminada.

 

Ahora bien cuando tengamos la necesidad de actualizar una llave primaria, que tenga una o varias llaves foráneas relacionadas, podemos hacerlo de dos formas.

  1. Crear un Trigger, para que cuando se actualice la llave primaria, se actualicen automáticamente las llaves foráneas relacionadas.
  2. Ingresar un nuevo registro con la nueva llave primaria, luego por medio de un UPDATE, actualizar todos los registros con llave foránea cuyo valor coincida con la llave primaria antigua, luego eliminar el registro con la llave primaria antigua.

No hay comentarios: