Oracle - Borrado en cascada

 
Vista:

Borrado en cascada

Publicado por Sergio (1 intervención) el 15/03/2007 10:18:18
Hola

Estoy diseñando una base de datos para oracle y tengo una duda de como realizar un borrado en cascada a través de un trigger.

Me explico. Tengo dos tablas padres (Usuario y Departamento) y una tabla hija (UsuarioDepartamento) que las relaciona a ambas. En esta última he puesto on delete cascade, y efectivamente cuando borro un dato de la tabla Usuario o Departamento, se borra de la tabla UsuarioDepartamento.

Lo que yo quiero hacer es que cuando borre un Departamento se borren todos los usuarios de dicho departamento. Con un trigger no puedo porque me da error de tabla mutante.

¿alguien sabe como se puede hacer eso?

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Borrado en cascada

Publicado por Hector (127 intervenciones) el 17/03/2007 01:29:00
Hola.
Para mi es muy peligroso borrar en cascada, no lo acostumbro. Prefiero controlarlo yo mismo.

pero si tienes que hacerlo, y evitar el problema de la tabla mutante, debes hacerlo por reflexion: esto es, en el trigger de usuario, controlar el borrado de departamento, o a la inversa.

Ojala te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

trigger

Publicado por christian (13 intervenciones) el 04/07/2007 20:44:19
HOLA QUE TAL LEI UN COMENTARIO QUE DISTES SOBRE TRABLAS MUTANDO EN LA WEB DEL PROGRAMADOR YO TENGO UN PROBLEMA EN ESO :

TE EXPLICO TENGO MIS TABLAS EN ORACLE 10G Y ESTAS SON;

drop table CABECERAFACTURA
CREATE TABLE CABECERAFACTURA(
NUMERO CHAR(5) primary key,
FECHA DATE,
CLIENTE CHAR(25),
DIRECCION CHAR(25) ,
SUB_TOTAL NUMBER(6,2),
IGV NUMBER(6,2),
TOTAL NUMBER(6,2)
)

drop table detallefactura

CREATE TABLE DETALLEFACTURA(
NUMERO CHAR(5) REFERENCES cabecerafactura(numero),
COD_PRODUCTO CHAR(5),
PRODUCTO CHAR(25),
CANTIDAD NUMBER(4),
PRECIO_UNITARIO NUMBER(6,2),
SUB_TOTAL NUMBER(6,2)
)

INSERT INTO CABECERAFACTURA VALUES('12345','21/03/2007','XXXXX','AV DOLORES',111,21.09,132.09)
INSERT INTO DETALLEFACTURA VALUES('12345','PR001','CD',10,1,10)
INSERT INTO DETALLEFACTURA VALUES('12345','PR002','MOUSE',5,8,45)
INSERT INTO DETALLEFACTURA VALUES('12345','PR003','TECLADO',8,7,64)

MI TRIGGER ES

CREATE TRIGGER LOLO
AFTER UPDATE ON DETALLEFACTURA
FOR EACH ROW
BEGIN
UPDATE DETALLEFACTURA SET SUB_TOTAL=CANTIDAD * PRECIO_UNITARIO;

END LOLO;

Y ESE TRIGGER ME BOTA ERROR QUE ESTOY MUTANDO QUE SOLUCION ME PODRIAS BRINDAR


GRAXIAS POR LA RESPUESTA
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar