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

Claves foráneas en phpmyadmin

Estas en el tema de Claves foráneas en phpmyadmin en el foro de Mysql en Foros del Web. Buenas, no se realmente si este problema va acá o en PHP. Si estoy en la sección errónea disculpen. El tema es que tengo una ...
  #1 (permalink)  
Antiguo 07/12/2010, 15:01
 
Fecha de Ingreso: agosto-2010
Mensajes: 100
Antigüedad: 14 años, 2 meses
Puntos: 2
Claves foráneas en phpmyadmin

Buenas, no se realmente si este problema va acá o en PHP. Si estoy en la sección errónea disculpen.
El tema es que tengo una bd con politica de cascada para para los borrados y actualizaciones de datos.
El script lo armé en un editor de textos y luego lo cargué a phpmyadmin sin problemas.
El script es el siguiente:
Código:
CREATE TABLE propiedad (
	idp INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
	tipo VARCHAR(30) NOT NULL
) ENGINE=INNODB;

CREATE TABLE casa (
	idc INT NOT NULL PRIMARY KEY REFERENCES propiedad(idp)
		ON DELETE CASCADE
		ON UPDATE CASCADE
) ENGINE=INNODB;
Agregué una propiedad de prueba tanto en la tabla propiedad como en la tabla casa (ambas con el mismo valor en id).
El problema es que cuando borro la propiedad desde dicha tabla con esta consulta:
Código:
DELETE FROM propiedad
WHERE (propiedad.idp = 1)
Borra la tupla de propiedad, pero no de casa.
Realmente no se si me estaré comiendo algún paso.
Cualquier ayuda en bienvenida.
Un saludo y gracias.
  #2 (permalink)  
Antiguo 07/12/2010, 15:21
 
Fecha de Ingreso: agosto-2010
Mensajes: 100
Antigüedad: 14 años, 2 meses
Puntos: 2
Respuesta: Claves foráneas en phpmyadmin

Bueno al parecer lo resolví. Hay que crear las tablas sin la clave foranea, solo PRIMARY KEY.
Luego agregar las relaciones desde la VIsta de Relaciones y ya.
Un saludo y gracias.
  #3 (permalink)  
Antiguo 07/12/2010, 15:50
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Claves foráneas en phpmyadmin

Estás haciendo un híbrido entre dos clásulas. El parser, al ejecutar la segunda sentencia simplemente ignoraba el REFERENCCES porque no es parte de PRiMARY KEY, sino de FOREIGN KEY; al ejecutarse quedaba así:
Código MySQL:
Ver original
  1. CREATE TABLE  `casa` (
  2.   `idc` int(11) NOT NULL,
  3.   PRIMARY KEY  (`idc`)
Como verás, todo lo que refería a la FK, simplemente se esfumaba.

Lo que en realidad debías usar era:
Código MySQL:
Ver original
  1. CREATE TABLE casa (
  2. CONSTRAINT `FK_casa_propiedad`
  3. FOREIGN KEY (`idc`) REFERENCES `propiedad` (`idp`)
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: claves, phpmyadmin
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 20:55.