claves foraneas

montver
03 de Marzo del 2004
Hola,
Mi inglés es muy pésimo, por lo que no puedo echar mucha mano al manual de mysql 4.0. Se que con esta nueva versión se pueden hacer claves foraneas ¿alguien podría ser tan amable de explicarme como se hacen?
Gracias

larva
03 de Marzo del 2004
por ejemplo tienes la tabla
clientes: id_cliente... y en la tabla
facturas: id_factura, id_cliente
id_cliente en facturas es foranea
Lo primero es ke ambos id_cliente tienen que ser del mismo tipo, exactamente el mismo.
Lo segundo es ke id_cliente en la tabla facturas tiene que ser index
Lo tercero es que tienes que definir la foreign key.
en la sentencia de creacion de la tabla facturas tendras:
CREATE TABLE 'facturas'(
... los campos
PRIMARY KEY ('id_factura'),
INDEX ('id_cliente'),
FOREIGN KEY ('id_cliente')
REFERENCES Clientes ('id_cliente')
ON UPTADE CASCADE ON DELETE RESTRICT
)TYPE=innoDB;

Con foreign key dices la clave que es foranea
Con references haces referencia a la tabla y clave de la que es foranea
y con update y delete indicas la accion que quieres que se realice, puedes poner cascade, restrict, no action y mas kosas.
Con cascade lo que haces es que si actualizas la clave de un cliente en la tabla de clientes, en los registros de la tabla facturas que tengan ese id_cliente tambien se modifike este kampo.
con restrict o no action ,lo que haces es que no dejas al usuario modificar o borrar un registro si existen referncias de la clave de ese registro en otras tablas, por ejemplo kon delete restrict si existiesen facturas asociadas a un cliente NO dejarias al usuario que borrara a ese clietne.
Por eso se pone normalmente on update cascade y on delete restrict