Databases
T05-004 Eliminación de tablas
Enunciado
Hemos dicho anteriormente. que para eliminar una tabla utilizaremos el comando
DROP TABLE.Sintaxis:
DROP TABLE NombreTabla [CASCADE CONSTRAINTS];La opción
CASCADE CONSTRAINTSse puede incluir para los casos en que alguna de las columnas sea clave ajena en otra tabla secundaria, lo que impediría su borrado. Al colocar esta opción las restricciones donde es clave ajena se borrarán antes y a continuación se eliminará la tabla en cuestión.Ejemplo:
Imaginemos que hemos creado dos tablas relacionadoas, como PARTIDAS y USUARIOS, con las siguientes sentencias:
CREATE TABLE PARTIDAS ( CodPartida NUMBER(8) PRIMARY KEY, FechaPartida DATE NOT NULL, Premio NUMBER(8,2) );CREATE TABLE USUARIOS ( Login VARCHAR(15) CONSTRAINT usu_log_PK PRIMARY KEY, Password VARCHAR (8) NOT NULL, Fecha_Ingreso DATE DEFAULT SYSDATE, Cod_Partida NUMBER(8) CONSTRAINT Cod_Part_FK REFERENCES PARTIDAS );Si intentáramos eliminar la tabla partidas con el comando
DROP TABLE PARTIDAS;se nos devolvería el siguiente error:
ORA-02449: unique/primary keys in table referenced by foreign keysEl error se debe a que en la tabla
USUARIOShemos creado una clave ajena que referencia a la tablaPARTIDAS.Para evitar este error, vamos a indicar que, en primer lugar, se borren todas las restricciones de clave ajena que se hayan creado sobre la tabla que queremos borrar. Para ello, añadiremos la cláusula
CASCADE CONSTRAINTSa la sentencia de borrado de la tabla:DROP TABLE USUARIOS CASCADE CONSTRAINTS;Ejercicio:
Imagina que, en la base de datos, tenemos las dos siguientes tablas creadas:
CREATE TABLE DEPARTAMENTOS (
COD_DEPARTAMENTO CHAR(3) PRIMARY KEY,
NOMBRE VARCHAR2(50)
);
CREATE TABLE MODULOS (
CODIGO NUMBER PRIMARY KEY,
NOMBRE VARCHAR2 (100),
DEPARTAMENTO CHAR(3) REFERENCES DEPARTAMENTOS
);
¿Cómo borrarías la tabla DEPARTAMENTOS?
Tipo
Solución
DROP TABLE DEPARTAMENTOS CASCADE CONSTRAINTS;
Prueba
SELECT TABLE_NAME FROM USER_TABLES;
LibrerÃas (Onfly databases)
CREATE TABLE DEPARTAMENTOS (
COD_DEPARTAMENTO CHAR(3) PRIMARY KEY,
NOMBRE VARCHAR2(50)
);
CREATE TABLE MODULOS (
CODIGO NUMBER PRIMARY KEY,
NOMBRE VARCHAR2 (100),
DEPARTAMENTO CHAR(3) REFERENCES DEPARTAMENTOS
);

