Insercion de datos sql oracle
Publicado por oraclesql (1 intervención) el 02/04/2016 20:58:12
Hola amigos acudo a vuestra sabiduría para que alguien me ilumine en sql. El problema es el siguiente: tengo que crear una bd oracle a partir de estas tablas:

Creo las tablas con sus correspondientes restricciones, etc (dejo código, bastante sencillo).
Y luego viene la hora de los INSERT que es donde tengo la duda del millón, y es como pongo ID_CAPITAL al insertar datos en la tabla COMUNIDADES si procede de la tabla LOCALIDADES que esta vacía, la solución que he tomado ha sido darle un "auto-increment" al igual que en ID_COMUNIDADES y lógicamente un alter table para desabilitar la constraint. Hasta ahí, todo "bien", ahora continuo con la inserción de las provincias y ya se complica todo, porque comparte clave ajena con COMUNIDADES y no puedo inventar, ilustro:
Me explico como un libro en llamas lo sé, pero a ver si alguien sabe como plantear el asunto, para que pueda realizar las inserciones de COMUNIDADES y PROVINCIAS. Una posible había pensado en modificar ambos campos y hacerlos NULL, sería correcto? Gracias por leer el tochaco si has llegado hasta aquí :elrisas: Un saludo

Creo las tablas con sus correspondientes restricciones, etc (dejo código, bastante sencillo).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
CREATE TABLE LOCALIDADES (
ID_LOCALIDAD NUMBER(5) NOT NULL,
NOMBRE VARCHAR2(50) NOT NULL,
POBLACION NUMBER(8) NOT NULL,
N_PROVINCIA NUMBER(2) NOT NULL,
CONSTRAINT PK_LOCALIDADES PRIMARY KEY (ID_LOCALIDAD)
);
CREATE TABLE PROVINCIAS (
N_PROVINCIA NUMBER(2) NOT NULL,
NOMBRE VARCHAR2(25) UNIQUE NOT NULL,
SUPERFICIE NUMBER(5) NOT NULL,
ID_CAPITAL NUMBER(5) UNIQUE NOT NULL,
ID_COMUNIDAD NUMBER(2) NOT NULL,
CONSTRAINT PK_PROVINCIAS PRIMARY KEY (N_PROVINCIA),
CONSTRAINT FK_PROVINCIAS FOREIGN KEY (ID_CAPITAL) REFERENCES LOCALIDADES(ID_LOCALIDAD) ON DELETE CASCADE
);
CREATE TABLE COMUNIDADES (
ID_COMUNIDAD NUMBER(2) NOT NULL,
NOMBRE VARCHAR2(50) UNIQUE NOT NULL,
ID_CAPITAL NUMBER(5) UNIQUE NOT NULL,
CONSTRAINT PK_COMUNIDADES PRIMARY KEY (ID_COMUNIDAD),
CONSTRAINT FK_COMUNIDADES FOREIGN KEY (ID_CAPITAL) REFERENCES LOCALIDADES(ID_LOCALIDAD) ON DELETE CASCADE
);
ALTER TABLE LOCALIDADES ADD CONSTRAINT FK_LOCALIDADES FOREIGN KEY (N_PROVINCIA) REFERENCES PROVINCIAS (N_PROVINCIA) ON DELETE CASCADE;
ALTER TABLE PROVINCIAS ADD CONSTRAINT FK_PROVINCIAS2 FOREIGN KEY (ID_COMUNIDAD) REFERENCES COMUNIDADES(ID_COMUNIDAD) ON DELETE CASCADE;
1
2
3
4
5
6
7
ALTER TABLE COMUNIDADES DISABLE CONSTRAINT FK_COMUNIDADES;
INSERT INTO COMUNIDADES (ID_COMUNIDAD, NOMBRE, ID_CAPITAL)
VALUES (1,'Madrid',1);
INSERT INTO PROVINCIAS (N_PROVINCIA, NOMBRE, SUPERFICIE, ID_CAPITAL, ID_COMUNIDAD)
VALUES (1, 'Madrid', 8028, 1, 1);
INSERT INTO PROVINCIAS (N_PROVINCIA, NOMBRE, SUPERFICIE, ID_COMUNIDAD)
VALUES (2, 'Almería', 1020, 2);
Valora esta pregunta


0