Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MySQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-07-2003
Avatar de orfeo
orfeo orfeo is offline
Miembro
 
Registrado: may 2003
Posts: 99
Poder: 22
orfeo Va por buen camino
No logro que funcionen un FOREIGN KEY

Hola, estoy usando mySQL v4.0.13 para windows, nesecito que las claves foraneas anden, estube lleyedo la DOC y solo es soportado por tablas InnoDB (es asi?)
Me refiero a que no andan en el sentido que no realiza las restricciones que deberia hacer, como ejemplo: libros y editorial

CREATE TABLE libro (
nombre char(10) PRIMARY KEY,
editorial char(10)
REFERENCES editorial (nombre)
ON DELETE cascade
ON UPDATE cascade
#RESTRICT
)TYPE=InnoDB;

CREATE TABLE editorial (
nombre char(10) PRIMARY KEY
)TYPE=InnoDB;


La creacion anda, pero cuando inserto la tupla ('The war','Kapeluz') en LIBRO la inserta sin problemas, sindo que 'kapeluz' no existe en editorial. si coloco ('kapeluz') en EDITORIAL y luego la modifico no actualiza los cambios en libros, ni hablar de los borrados en cascada (no los hace).
Probe tambien la opcion RESTRICT que supongo que es el equivalente a REJECT del SQL-92, porque REJECT falla.

a mysql lo he probado cargar como 'mysqld' y 'mysqld-max' pero no hay cambios.

La conexion la estoy haciendo desde ODBC (SQL Explorer) o desde Mysql Control Center.

Estoy Haciendo Algo mal?
Responder Con Cita
  #2  
Antiguo 16-07-2003
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 22
kayetano Va por buen camino
Hola

¿ Has creado una base de datos para almacenar tablas innodb ?
Busca en el manual de MySQL la creacion de "InnoDB Tablespace" seguramente es por esto. Yo tambien cometí el mismo fallo ;-)
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #3  
Antiguo 16-07-2003
Avatar de orfeo
orfeo orfeo is offline
Miembro
 
Registrado: may 2003
Posts: 99
Poder: 22
orfeo Va por buen camino
Thumbs up

Gracias por contestar,

El problema es que Mysql no crea indices automaticamente para las FOREIGN KEY, hay que definirle los indices a mano como:



CREATE TABLE trabajo (
idTrabajo int(11) NOT NULL,
Otm char(50) NOT NULL, INDEX idxOtm (OTm(50)),
FOREIGN KEY (Otm) REFERENCES oti(Otm)
ON UPDATE CASCADE
ON DELETE CASCADE,
descripcion char(255),
HoraFinal double,
PrecioHoraFinal double,
PRIMARY KEY (idTrabajo,Otm)
)TYPE=InnoDB;

de esto me di cuenta luego que leer la DOC por 3ra vez y vi el ejemplo que trae.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 06:00:46.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi