MySQL - problemas con ON UPDATE CASCADE

 
Vista:

problemas con ON UPDATE CASCADE

Publicado por Miguel (1 intervención) el 04/08/2006 12:04:44
Hola,

Tengo isntalado MySQL 4.0.12

En la siguiente tabla necesito modificar el campo cod_actividad y que los cambios se propaguen tanto a otras tablas cuyas claves ajenas apuntan a esta, como en el campo cod_act_padre que es clave ajena sobre la misma tabla.

DROP TABLE IF EXISTS actividad;
CREATE TABLE actividad (
cod_actividad varchar(40) NOT NULL default '',
cod_act_padre varchar(40) default NULL,
nombre varchar(125) default NULL,
cod_dibujo varchar(40) default NULL,
cod_actividad_propio varchar(40) default NULL,
PRIMARY KEY (cod_actividad),
KEY padre_idx (cod_act_padre),
FOREIGN KEY (`cod_act_padre`) REFERENCES `actividad` (`cod_actividad`) ON DELETE CASCADE ON UPDATE CASCADE
) TYPE=InnoDB;

Haciendo distintas pruebas todo funciona bien exccepto a la hora de actualizar la clave ajena sobre la misma tabla. Obtengo un error de clave ajena

Os paso un caso que produce el error que os indico:

insert into actividad values('2',NULL,'act2','2','');
insert into actividad values('2.1','2','act21','2.1','');

and I execute this sentence:
update actividad set cod_actividad = '1' where cod_actividad='2';

ERROR 1217: Cannot delete or update a parent row: a foreign key constraint fails

Podeis indicarme como solucionar el problema?
He pensado en soluciones un poco chapucillas como trabajar con otra tabla auxiliar que no tenga la definicion de la clave ajena sobre la misma tabla, pero iumagino que habra otra solucion mas "elegante"

Gracias y un saludo
Miguel
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