Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Claves foráneas sobre una misma tabla

Estas en el tema de Claves foráneas sobre una misma tabla en el foro de Mysql en Foros del Web. Hola, no consigo que me funcionen las relaciones reflexivas, pongo un ejemplo: CREATE TABLE `gestionproyectos`.`test` ( `cdemp` char(3) collate utf8_spanish_ci NOT NULL, `cdjefe` char(3) collate ...
  #1 (permalink)  
Antiguo 28/03/2008, 15:29
 
Fecha de Ingreso: noviembre-2006
Mensajes: 56
Antigüedad: 17 años, 5 meses
Puntos: 1
Claves foráneas sobre una misma tabla

Hola, no consigo que me funcionen las relaciones reflexivas, pongo un ejemplo:

CREATE TABLE `gestionproyectos`.`test` (
`cdemp` char(3) collate utf8_spanish_ci NOT NULL,
`cdjefe` char(3) collate utf8_spanish_ci default NULL,
PRIMARY KEY (`cdemp`),
KEY `cdjefe` (`cdjefe`),
CONSTRAINT `test_ibfk_1` FOREIGN KEY (`cdjefe`) REFERENCES `test` (`cdemp`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci

Añado los datos:
cdemp cdjefe
1 ------ null
2 ------ 1
3 ------ 1

Lo que quiero es que si borro la fila con el codigo de empleado=1 se borren en cascada todos las filas que codigo jefe=1, ¿estoy haciendo algo mal? o es que no puede hacerse esto en MySQL? En Oracle va perfecto.

Un Saludo.
  #2 (permalink)  
Antiguo 29/03/2008, 05:52
Avatar de cmarti  
Fecha de Ingreso: noviembre-2003
Ubicación: Buenos Aires - Argentina
Mensajes: 442
Antigüedad: 20 años, 5 meses
Puntos: 1
Re: Claves foráneas sobre una misma tabla

Me parece que el problema lo tenés en el null de cdjefe. Cuando asocias una FK, esta no debe contener null (no tiene sentido).
__________________
When all else is lost the future still remains.
  #3 (permalink)  
Antiguo 29/03/2008, 08:20
 
Fecha de Ingreso: noviembre-2006
Mensajes: 56
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: Claves foráneas sobre una misma tabla

Cita:
Iniciado por cmarti Ver Mensaje
Me parece que el problema lo tenés en el null de cdjefe. Cuando asocias una FK, esta no debe contener null (no tiene sentido).
En este caso si, hay empleados que no tienen ningún jefe, por tanto cdjefe es null.

De todo modos, si funciona, me he hecho un lío con la edición en mysql-query-browser, al borrar no se actualizaba la pantalla.

Un Saludo y gracias.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:06.