Databases
T05-003 Claves ajenas
Enunciado
Cláusula
ON DELETE.La cláusula
ONDELETEpermite 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áusulaON DELETEel 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 valorNULLen 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
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)
--

