lunes, 14 de noviembre de 2016

ON DELETE CASCADE / ON DELETE SET NULL

Restricciones en Cascada

  • La cláusula CASCADE CONSTRAINTS se utiliza junto con la cláusula DROP COLUMN.
  • La cláusula CASCADE CONSTRAINTS borra todas las restricciones de integridad referencial que hacen referencia a las claves única y primaria definidas en las columnas borradas.
  • La cláusula CASCADE CONSTRAINTS también borra todas las restricciones de varias columnas definidas en las columnas borradas.

Restricciones en Cascada

Esta sentencia ilustra el uso de la cláusula CASCADE CONSTRAINTS. Suponga que se crea la tabla TEST1 de este modo:

CREATE TABLE test1 (
 pk NUMBER PRIMARY KEY,
 fk NUMBER,
 col1 NUMBER,
 col2 NUMBER,
 CONSTRAINT fk_constraint FOREIGN KEY (fk) REFERENCES test1,
 CONSTRAINT ck1 CHECK (pk > 0 and col1 > 0),
 CONSTRAINT ck2 CHECK (col2 > 0));

Se devuelve un error para las siguientes sentencias:

ALTER TABLE test1 DROP (pk);    —pk es una clave principal.
ALTER TABLE test1 DROP (col1);  —la restricción de varias columnas ck1
            hace referencia a col1.
Ejemplo:

ALTER TABLE emp2
DROP COLUMN employee_id CASCADE CONSTRAINTS;

ALTER TABLE test1
DROP (pk, fk, col1) CASCADE CONSTRAINTS;

Al ejecutar la siguiente sentencia, se borra la columna EMPLOYEE_ID, la restricción de clave primaria y las restricciones de clave ajena que hacen referencia a la restricción de clave primaria para la tabla EMP2:
ALTER TABLE emp2 DROP COLUMN employee_id CASCADE CONSTRAINTS;
Si se borran también todas las columnas a las que hacen referencia las restricciones definidas en las columnas borradas, CASCADE CONSTRAINTS no es necesario. Por ejemplo, suponiendo que ninguna otra restricción referencial de otras tablas hace referencia a la columna PK, es válido ejecutar la siguiente sentencia sin la cláusula CASCADE CONSTRAINTS para la tabla TEST1 creada en la página anterior:
ALTER TABLE test1 DROP (pk, fk, col1);
Share:

0 comentarios:

Publicar un comentario

Archivo

Cual es el tema de mayor interes para ti?