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

problema con vinculacion de tablas

Estas en el tema de problema con vinculacion de tablas en el foro de Mysql en Foros del Web. Hola a todos: Tengo una tabla que llamo cursos_tarifas, en ella para un determinado curso establezco diferentes tarifas: CREATE TABLE IF NOT EXISTS `cursos_tarifas` ( ...
  #1 (permalink)  
Antiguo 24/07/2011, 08:30
Avatar de JOSANCIN  
Fecha de Ingreso: septiembre-2008
Ubicación: huesca
Mensajes: 298
Antigüedad: 15 años, 7 meses
Puntos: 0
problema con vinculacion de tablas

Hola a todos:

Tengo una tabla que llamo cursos_tarifas, en ella para un determinado curso establezco diferentes tarifas:

CREATE TABLE IF NOT EXISTS `cursos_tarifas` (
`id_cursotarifa` int(11) NOT NULL AUTO_INCREMENT,
`nombre_curso` varchar(250) NOT NULL,
`fecha_curso` varchar(250) NOT NULL,
`nombre_tarifa` varchar(250) NOT NULL,
`importe_tarifa` int(11) NOT NULL,
`formulario` int(11) NOT NULL,
`numerador` int(11) NOT NULL,
PRIMARY KEY (`id_cursotarifa`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=259 ;

Quiero vincular esta tabla a otra que llamo inscritos (quiero que el id de esta tabla sea la clave foranea de otra que llamo inscritos en los que quiero almacenar el nombre del inscrito y vincular esto a los cursos de la tabla cursos_tarifas; hago lo siguiente:



CREATE TABLE inscritos
(
id_inscritos INT NOT NULL AUTO_INCREMENT,
id_cursotarifa INT NOT NULL,
nombre VARCHAR(25),
PRIMARY KEY(id_inscritos),
INDEX (id_cursotarifa),
FOREIGN KEY (id_cursotarifa) REFERENCES cursos_tarifas(id_cursotarifa)
) TYPE = INNODB

pero todo el rato me sale un error:
#1005 - Can't create table 'cursos_retiros.inscritos' (errno: 150)

agradeceria si alguien viese cual es el error, yo he mirado mucho y no lo encuentro

Gracias y que vaya bien
  #2 (permalink)  
Antiguo 24/07/2011, 09:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: problema con vinculacion de tablas

No puedes crear una foreign key entre una tabla InnoDB (que soporta FK) con una tabla MyISAM (que no soporta FK). para hacerlo ambas deben ser del mismo tipo.

Por otro lado, si ambas fuesen InnoDB, tienes que tener cuidado cuando creas la FK, porque la tabla destino (la de la FK), si ya contiene registros, deben cumplir con la FK. Esto significa que el campo que es FK debe, en todos los registros, contener valores que existan en la tabla origen del dato, o de lo contrario no podrá crearlo (violaría la restricción).
Normalmente es preferible que las tablas estén vacías antes de crear esas relaciones para evitar conflictos con los datos preexistentes.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 24/07/2011, 15:04
Avatar de neglivv  
Fecha de Ingreso: julio-2011
Mensajes: 103
Antigüedad: 12 años, 9 meses
Puntos: 11
Respuesta: problema con vinculacion de tablas

Creo que es porque las dos tablas deben tener:
ENGINE=Innodb
y ademas el id_cursotarifa de la tabla inscritos debe ser así:
id_cursotarifa int(11) NOT NULL (a mi me daba error cuando creaba una clave foránea de un tipo o longitud distinta a la que referencia).
Consulta esto:
http://www.neleste.com/1005-cant-create-table-xxx-errno-150/
http://forums.mysql.com/read.php?22,19755,43805#msg-43805

Etiquetas: tabla, tablas
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 04:50.