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

Mysql y Foreign keys

Estas en el tema de Mysql y Foreign keys en el foro de Bases de Datos General en Foros del Web. Hola, estoy usando mysql Administrator para diseñar la BD y parece que no tengo claros los conceptos ya que al intentar borrar/modificar un registro me ...
  #1 (permalink)  
Antiguo 04/08/2005, 05:41
msi
 
Fecha de Ingreso: marzo-2005
Mensajes: 70
Antigüedad: 19 años, 2 meses
Puntos: 0
Mysql y Foreign keys

Hola, estoy usando mysql Administrator para diseñar la BD y parece que no tengo claros los conceptos ya que al intentar borrar/modificar un registro me muestra el siguiente error: Cannot delete or update a parent row: a foreign key constraint fails

Supongamos el ejemplo típico de una liga de fútbol donde hay una temporada / equipo / entrenador. Estas 3 tablas tienen sus claves primarias correspondientes (#temporada, #equipo, #entrenador).

Existe una 4º tabla en la que se guardan los historiales de todo. Sería algo como: #cod, temp, equip, entre

Yo defino las claves foráneas en esta 4º tabla, 3 exactamente, temp como clave foránea de #temporada, equip como clave foránea de la tabla Equipo, etc..

Al definir las claves foráneas con mysqladministrator se crean también automáticamente 3 indices (uno por cada clave foránea). Todas las tablas son de tipo InnoDB. Mi intención es que si modifico las claves primarias de Temporada, o Equipo, o Entrenador, se modifique también en todos los registros de Historial asociados.

El caso es que cuando quiero borrar un registro de la tabla Temporada, Equipo o Entrenador me salta el error pero no tengo problemas a la hora de borrar un registro específico de Historial.

¿Que me paso por alto?
  #2 (permalink)  
Antiguo 04/08/2005, 08:01
Avatar de haron  
Fecha de Ingreso: febrero-2004
Ubicación: Cádiz (refinitivo)
Mensajes: 632
Antigüedad: 20 años, 2 meses
Puntos: 3
prueba con esto:

Código:
alter table tabla_1
  add index_constraint_1 foreign key tabla2_id references tabla_2(id)
    ON DELETE CASCADE
    on update cascade
para mas informacion:
http://dev.mysql.com/doc/mysql/en/in...nstraints.html
__________________
Si ocurre algo importante, estamos afuera fumándonos unos cigarritos.
  #3 (permalink)  
Antiguo 04/08/2005, 12:45
msi
 
Fecha de Ingreso: marzo-2005
Mensajes: 70
Antigüedad: 19 años, 2 meses
Puntos: 0
Gracias por la ayuda pero no me sirve. He probado tu código y me daba error al intentar crear los índices (index_constraint_1). Quitando eso, he podido crear las claves foráneas. Esta vez lo he modificado en la consola en vez de utilizar la herramienta gráfica. Un ejemplo es:

ALTER TABLE HISTORIALES
ADD FOREIGN KEY (TEMPORADA) REFERENCES TEMPORADAS (TEMPORADA)
ON DELETE CASCADE
ON UPDATE CASCADE;

(y lo mismo para el resto..) Me crea 3 claves foráneas (historiales_ibfk_1, historiales_ibfk_2, historiales_ibfk_3) y se ha configurado de la misma manera que si hubiese utilizado la herramienta gráfica mysqladministrator.

Yo juraría que está todo bien pero sigue apareciendo el error. Probaré a cambiar de versión (por si fuese eso). Tengo WindowsXP y mysql versión4.1.10a-nt.

De todas formas, estoy utilizando mysqladministrator pero... ¿Lo normal es crear las tablas escribiendo el código o utilizando alguna herramienta como mysqladministrator?

Saludos.
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 06:24.