Update cascade en creacion de tablas en oracle
CREATE TABLE Disco_Duro(
Num_Mat NUMBER NOT NULL CHECK(Num_Mat >0) REFERENCES Computador ON DELETE CASCADE,
Letra_Hd VARCHAR2(1) CHECK (Letra_HD IN ('C', 'D', 'E', 'F')),
Tipo_BUS VARCHAR2 (4) NOT NULL CHECK (Tipo_BUS IN ('SCSI', 'IDE')),
Tam_Hd NUMBER NOT NULL,
CONSTRAINT PK_Disco_Duro PRIMARY KEY (Num_Mat, Letra_Hd));
CREATE TABLE Particion(
Num_Mat NUMBER NOT NULL,
Letra_Hd VARCHAR2(1) CHECK (Letra_HD IN ('C', 'D', 'E', 'F')),
Num_Part NUMBER CHECK (Num_Part > 0),
Tam_Part NUMBER NOT NULL CHECK(Tam_Part > 0),
Sis_Op VARCHAR2(20),
Pass_Admin_So VARCHAR2(10),
CONSTRAINT PK_Particion PRIMARY KEY (Num_Mat, Letra_Hd, Num_Part),
CONSTRAINT FK_Part_Hd FOREIGN KEY (Num_Mat, Letra_Hd) REFERENCES Disco_Duro
ON DELETE CASCADE
ON UPDATE CASCADE
);
Bueno, ahi estan pegadas las tablas, y cuando lanzas la segunda, la de las particiones sale un error tal que asi:
SQL> CREATE TABLE Particion(
2 Num_Mat NUMBER NOT NULL,
3 Letra_Hd VARCHAR2(1) CHECK (Letra_HD IN ('C', 'D', 'E', 'F')),
4 Num_Part NUMBER CHECK (Num_Part > 0),
5 Tam_Part NUMBER NOT NULL CHECK(Tam_Part > 0),
6 Sis_Op VARCHAR2(20),
7 Pass_Admin_So VARCHAR2(10),
8 CONSTRAINT PK_Particion PRIMARY KEY (Num_Mat, Letra_Hd, Num_Part),
9 CONSTRAINT FK_Part_Hd FOREIGN KEY (Num_Mat, Letra_Hd) REFERENCES Disco_Duro
10 ON DELETE CASCADE
11 ON UPDATE CASCADE
12 );
ON UPDATE CASCADE
*
ERROR en línea 11:
ORA-00907: falta el paréntesis derecho
¿A qué se debe este error?, ¿Qué hay que hacer para que funcione el on update cascade?.
La cuestión es que de los 2 campos que hay en la clave ajena se actualice la letra_hd.
Num_Mat NUMBER NOT NULL CHECK(Num_Mat >0) REFERENCES Computador ON DELETE CASCADE,
Letra_Hd VARCHAR2(1) CHECK (Letra_HD IN ('C', 'D', 'E', 'F')),
Tipo_BUS VARCHAR2 (4) NOT NULL CHECK (Tipo_BUS IN ('SCSI', 'IDE')),
Tam_Hd NUMBER NOT NULL,
CONSTRAINT PK_Disco_Duro PRIMARY KEY (Num_Mat, Letra_Hd));
CREATE TABLE Particion(
Num_Mat NUMBER NOT NULL,
Letra_Hd VARCHAR2(1) CHECK (Letra_HD IN ('C', 'D', 'E', 'F')),
Num_Part NUMBER CHECK (Num_Part > 0),
Tam_Part NUMBER NOT NULL CHECK(Tam_Part > 0),
Sis_Op VARCHAR2(20),
Pass_Admin_So VARCHAR2(10),
CONSTRAINT PK_Particion PRIMARY KEY (Num_Mat, Letra_Hd, Num_Part),
CONSTRAINT FK_Part_Hd FOREIGN KEY (Num_Mat, Letra_Hd) REFERENCES Disco_Duro
ON DELETE CASCADE
ON UPDATE CASCADE
);
Bueno, ahi estan pegadas las tablas, y cuando lanzas la segunda, la de las particiones sale un error tal que asi:
SQL> CREATE TABLE Particion(
2 Num_Mat NUMBER NOT NULL,
3 Letra_Hd VARCHAR2(1) CHECK (Letra_HD IN ('C', 'D', 'E', 'F')),
4 Num_Part NUMBER CHECK (Num_Part > 0),
5 Tam_Part NUMBER NOT NULL CHECK(Tam_Part > 0),
6 Sis_Op VARCHAR2(20),
7 Pass_Admin_So VARCHAR2(10),
8 CONSTRAINT PK_Particion PRIMARY KEY (Num_Mat, Letra_Hd, Num_Part),
9 CONSTRAINT FK_Part_Hd FOREIGN KEY (Num_Mat, Letra_Hd) REFERENCES Disco_Duro
10 ON DELETE CASCADE
11 ON UPDATE CASCADE
12 );
ON UPDATE CASCADE
*
ERROR en línea 11:
ORA-00907: falta el paréntesis derecho
¿A qué se debe este error?, ¿Qué hay que hacer para que funcione el on update cascade?.
La cuestión es que de los 2 campos que hay en la clave ajena se actualice la letra_hd.
1 Respuesta
Respuesta de privatte
-1