/* @crearBD_directorio */ SET SERVEROUTPUT ON /* si ya existen las tablas, eliminarlas (primero la de documentos) */ DECLARE contador NUMBER; BEGIN SELECT count(*) INTO contador FROM TAB WHERE TNAME = 'DOCUMENTO'; IF contador > 0 THEN DBMS_OUTPUT.PUT_LINE ('existe la tabla Documento -> se elimina'); EXECUTE IMMEDIATE 'DROP TABLE Documento'; ELSE DBMS_OUTPUT.PUT_LINE ('la tabla Documento no existe'); END IF; SELECT count(*) INTO contador FROM TAB WHERE TNAME = 'DIRECTORIO'; IF contador > 0 THEN DBMS_OUTPUT.PUT_LINE ('existe la tabla Directorio -> se elimina'); EXECUTE IMMEDIATE 'DROP TABLE Directorio'; ELSE DBMS_OUTPUT.PUT_LINE ('la tabla "Directorio" no existe'); END IF; END; / CREATE TABLE Directorio ( idDir NUMBER(4) CONSTRAINT Directorio_PK PRIMARY KEY, nombre VARCHAR2(256) NOT NULL, dirPadre NUMBER(4)); /* la restriccion de clave ajena hay que añadirla después de que se haya creado la tabla */ ALTER TABLE Directorio ADD CONSTRAINT dirPadreDir_FK FOREIGN KEY (dirPadre) REFERENCES Directorio(idDir) ENABLE; CREATE TABLE Documento ( idDoc NUMBER(4) CONSTRAINT Documento_PK PRIMARY KEY, nombre VARCHAR2(80) NOT NULL, dirPadre NUMBER(4) CONSTRAINT dirPadreDoc_FK REFERENCES Directorio(idDir)); COMMIT;