Databases

T05-003 Claves ajenas

Enunciado

Cláusula ON DELETE.

La cláusula ON DELETE permite determinar la forma en la que la Base de Datos mantiene la integridad referencial al eliminar una clave primaria o única. Si no utilizamos la cláusula ON DELETE el gestor de la Base de Datos no permite que se borre una clave referenciada en la tabla padre si tiene alguna fila en la tabla hija que la referencie.

Tenemos otras opciones para la cláusula:

  • ON DELETE CASCADE: te permitirá borrar todos los registros cuya clave ajena sea igual a la clave del registro borrado.
  • ON DELETE SET NULL: colocará el valor NULL en todas las claves ajenas relacionadas con la borrada.

Ejercicio:

Modifica la solución del ejercicio anterior, de manera que cuando se elimine un MODULO se eliminen todos los LIBROS relacionados.

Tipo

DDL

Solución


												
CREATE TABLE MODULOS ( CODIGO NUMBER, NOMBRE VARCHAR2 (100), CICLO CHAR(3), PRIMARY KEY (CODIGO, CICLO) ); CREATE TABLE LIBROS ( ISBN NUMBER PRIMARY KEY, TITULO VARCHAR2 (100), MODULO NUMBER, CICLO CHAR(3), FOREIGN KEY (MODULO, CICLO) REFERENCES MODULOS (CODIGO, CICLO) ON DELETE CASCADE );

Prueba


											
SELECT USER_CONSTRAINTS.TABLE_NAME, STATUS, COLUMN_NAME, POSITION, DELETE_RULE FROM USER_CONSTRAINTS JOIN USER_CONS_COLUMNS USING (CONSTRAINT_NAME) WHERE CONSTRAINT_TYPE = 'R' ORDER BY COLUMN_NAME;

Librerías (Onfly databases)


											
--