On delete cascade y On update cascade

inmadgm
15 de Agosto del 2008
Hola,
Tengo la siguiente tabla:
create table zonas_gestion (
id_zona_gestion number(8)primary key using index,
nombre_zona_gestion varchar2(50),
descrip_zona_gestion varchar2(200),
id_gerente number(8) references gerentes on delete cascade on update cascade
);
pero me da un error:

id_gerente number(8) references gerentes on delete cascade on update cascade
*
ERROR en línea 5:
ORA-00907: falta el paréntesis derecho
Supongo que será la forma de poner el delete y el update. ¿cómo se pondría?
Gracias!!.

ozzy
15 de Agosto del 2008
Yo me supongo que será por dos cosas :
1 ) Esa no es la manera de crear una FK, puedes creartela de esta manera :

ALTER TABLE ZONAS_GESTION ADD CONSTRAINT
GERENTE_FK FOREIGN KEY
(ID_GERENTE) REFERENCES GERENTE (ID_GERENTE)
ON DELETE CASCADE

2 ) Creo que el ON UPDATE CASCADE no existe

Mitchell
15 de Agosto del 2008
Bueno, yo soy de la opinion de ozzy, pero solo en el punto 2.
Puedes crear una FK en la misma sentencia sql así:
create table zonas_gestion (
id_zona_gestion number(8) primary key,
nombre_zona_gestion varchar2(50),
descrip_zona_gestion varchar2(200),
id_gerente number(8) references gerentes on delete cascade );

Pero estoy de acuerdo con la parte 1 de ozzy, no he encontrado en ningún sitio como decirle ON UPDATE CASCADE, En designer si que se le puede decir, pero lo implementa él en PL/SQL cuando genera el form (creo)

Mitchell
15 de Agosto del 2008
Por cierto, se me habia olvidado, para que sirve el USING INDEX en "id_zona_gestion number(8) primary key using index,"?
Da igual que lo ponga como que no, al final siempre se crea un indice para la PK. (uso 9.2.0.1)

Gracias

inmadgm
15 de Agosto del 2008
Si que existe

ozzy
15 de Agosto del 2008
Eso será en tu pueblo. En Oracle city NO SE PUEDE.
Tienes que montar codigo pl-sql, por ejemplo en un trigger para que cuando se actualize un registro de una tabla, actualize todos los registros que dependen de ese.
¿ que te ponga como ? TE LO INVENTAS

inmadgm
15 de Agosto del 2008
Pues si te metes en algun manual o tutoria de Sql, en la sintaxis de crear tabla aparece.

pepillo grillo
15 de Agosto del 2008
no se porque decis que si borra un registro que me casque una paja. yo no hago eso.

Doni
15 de Agosto del 2008
Mira esta es la forma en que yo lo hice y me funciono de maravilla, espero te ayude.

alter table tblCliente
add constraint FK_cliente_municipio foreign key(IdEmpleado)
references tblMunicipio(IdEmpleado)
on delete cascade
on update cascade