Claves foraneas
Buenas, mi duda es la siguiente:
Tengo una tabla "A" con clave primaria formada por campos "a1" y "a2", y una tabla "B", de manera que segun mi modelo tiene que haber propagacion de la clave de "A" a "B", mi problema es que cuando establezco mi restriccion:
(b1,b2) --> A(a1,a2) me sale un error en MySql front....
Tambien he probado a crear la restriccion mediante una sentencia sql y tambien obtengo error....
¿Es que MySql no permite clave foraneas compuestas de mas de un elemento?
Las versiones que utilizo son:
mysql-4.1.13.
mysql front 3.2 (compilacion 6.25)
Gracias ;)
Tengo una tabla "A" con clave primaria formada por campos "a1" y "a2", y una tabla "B", de manera que segun mi modelo tiene que haber propagacion de la clave de "A" a "B", mi problema es que cuando establezco mi restriccion:
(b1,b2) --> A(a1,a2) me sale un error en MySql front....
Tambien he probado a crear la restriccion mediante una sentencia sql y tambien obtengo error....
¿Es que MySql no permite clave foraneas compuestas de mas de un elemento?
Las versiones que utilizo son:
mysql-4.1.13.
mysql front 3.2 (compilacion 6.25)
Gracias ;)
A partir de la versión 3.23.43b, se pueden definir restricciones de claves foráneas con el uso de tablas InnoDB. InnoDB es el primer tipo de tabla que permite definir estas restricciones para garantizar la integridad de los datos.
Para trabajar con claves foráneas, necesitamos hacer lo siguiente:
• Crear ambas tablas del tipo InnoDB.
• Usar la sintaxis FOREIGN KEY(campo_fk) REFERENCES nombre_tabla (nombre_campo)
• Crear un Ãndice en el campo que ha sido declarado clave foránea.
InnoDB no crea de manera automática Ãndices en las claves foráneas o en las claves referenciadas, asà que debemos crearlos de manera explÃcita. Los Ãndices son necesarios para que la verificación de las claves foráneas sea más rápida. A continuación se muestra como definir las dos tablas de ejemplo con una clave foránea.
CREATE TABLE cliente
(
id_cliente INT NOT NULL,
nombre VARCHAR(30),
PRIMARY KEY (id_cliente)
) TYPE = INNODB;
CREATE TABLE venta
(
id_factura INT NOT NULL,
id_cliente INT NOT NULL,
cantidad INT,
PRIMARY KEY(id_factura),
INDEX (id_cliente),
FOREIGN KEY (id_cliente) REFERENCES cliente(id_cliente)
) TYPE = INNODB;
Para trabajar con claves foráneas, necesitamos hacer lo siguiente:
• Crear ambas tablas del tipo InnoDB.
• Usar la sintaxis FOREIGN KEY(campo_fk) REFERENCES nombre_tabla (nombre_campo)
• Crear un Ãndice en el campo que ha sido declarado clave foránea.
InnoDB no crea de manera automática Ãndices en las claves foráneas o en las claves referenciadas, asà que debemos crearlos de manera explÃcita. Los Ãndices son necesarios para que la verificación de las claves foráneas sea más rápida. A continuación se muestra como definir las dos tablas de ejemplo con una clave foránea.
CREATE TABLE cliente
(
id_cliente INT NOT NULL,
nombre VARCHAR(30),
PRIMARY KEY (id_cliente)
) TYPE = INNODB;
CREATE TABLE venta
(
id_factura INT NOT NULL,
id_cliente INT NOT NULL,
cantidad INT,
PRIMARY KEY(id_factura),
INDEX (id_cliente),
FOREIGN KEY (id_cliente) REFERENCES cliente(id_cliente)
) TYPE = INNODB;
