At 08:40 25/03/2003 -0300, Jorge Carlos Franco wrote:
Hola,
>segun lo que he leido hasta el momento (que no es mucho) he podido
>entender que para que una tabla este relacionada con otra debe tener una
>columna en comun con la tabla con la cual la quiero relacionar por ejemplo.
Bien primero tú necesitas usar el tipo de tablas llamada InnoDB
para poder usar integridad referencial, las líneas comenzando con
# son mis comentarios:
mysql> create table padres (id_padres int auto_increment not null
-> primary key,
-> nombre char(40),
-> apellido char(25),
-> edad int) type=innodb;
Query OK, 0 rows affected (0.06 sec)
mysql> create table hijos (id_padres int not null, id_hijos int
-> auto_increment not null
-> primary key,
-> nombre char(40),
-> apellido char(25),
-> edad int,
-> index par_id (id_padres), foreign key (id_padres)
-> references padres(id_padres) on update cascade) type=innodb;
Query OK, 0 rows affected (0.17 sec)
# nota que el campo id_padres son los primeros en cada tabla
mysql> insert into
-> padres
-> values
-> ("","josé", "diaz", 45);
Query OK, 1 row affected (0.06 sec)
mysql> insert into
-> hijos
-> values
-> (1,"","carlos", "diaz", 10);
Query OK, 1 row affected (0.05 sec)
# ahora voy a probar la integridad referencial tentando remover
# en la tabla padres el registro que tiene registros en la tabla
# hijos, eso debe ser negado:
mysql> delete from padres where id_padres=1;
ERROR 1217: Cannot delete a parent row: a foreign key constraint fails
# eso prueba la referencia
# para hacer eso posible es necesario remover los campos relacionados
# en la tabla hijos
saludos,
--
Regards,
__ ___ ___ ____ __
/ |/ /_ __/ __/ __ \/ / Miguel Angel Solórzano <miguel@stripped>
/ /|_/ / // /\ \/ /_/ / /__ São Paulo - Brazil
/_/ /_/\_, /___/\___\_\___/
<___/ www.mysql.com