MySQL - Llave foranea con varchar

 
Vista:
sin imagen de perfil
Val: 10
Ha aumentado su posición en 13 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Llave foranea con varchar

Publicado por Wilson (5 intervenciones) el 13/11/2019 21:41:25
Buenas tardes a todos:

he estado tratando de crear una llave foránea entre dos tablas cuyas columnas son VARCHAR(10) NOT NULL , pero no me ha sido posible, y he hecho otro ejemplo con INT NOT NULL y me ha salido sin problemas, es posible que la llave foranea no acepte el tipo VARCHAR?

Gracias por su ayuda.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Francisco
Val: 201
Bronce
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Llave foranea con varchar

Publicado por Francisco (73 intervenciones) el 14/11/2019 19:04:18
Hola

Ejecute el siguiente codigo;


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
drop table IF EXISTS T2;
drop table IF EXISTS T1;
 
 
Create table if not exists T1 (
	id Varchar(10) NOT NULL,
	texto Varchar(255),
 Primary Key (id)
) ENGINE = InnoDB;
 
Create table if not exists T2 (
	id Varchar(10) NOT NULL,
	t1_id Varchar(10) NOT NULL,
	texto Varchar(255),
 Primary Key (id),
 Constraint R01 Foreign Key (t1_id) references T1 (id) on delete  restrict on update  restrict
) ENGINE = InnoDB;

o tambien

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
drop table IF EXISTS T2;
drop table IF EXISTS T1;
 
 
Create table if not exists T1 (
	id Varchar(10) NOT NULL,
	texto Varchar(255),
 Primary Key (id)) ENGINE = InnoDB;
 
Create table if not exists T2 (
	id Varchar(10) NOT NULL,
	t1_id Varchar(10) NOT NULL,
	texto Varchar(255),
 Primary Key (id)) ENGINE = InnoDB;
 
 
Alter table T2 add Constraint R01 Foreign Key (t1_id) references T1 (id) on delete  restrict on update  restrict;

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 10
Ha aumentado su posición en 13 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Llave foranea con varchar

Publicado por Wilson (5 intervenciones) el 15/11/2019 10:26:01
Buenas noches francisco.

estoy mirando el código que me envió, y veo que si es posible crear una llave foránea con varchar, ahora voy a comparar con la consulta que he estado haciendo, para ver donde tengo el error.

Muchas gracias por su aporte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 54
Ha aumentado 1 puesto en MySQL (en relación al último mes)
Gráfica de MySQL

Llave foranea con varchar

Publicado por elhabraque (21 intervenciones) el 15/11/2019 14:11:31
Buenos días

Si estás utilizando el WorkBench, a veces se lía con el idioma del campo. Puede ser que el campo esté en un CHARSET o COLLATE diferentes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 10
Ha aumentado su posición en 13 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

Llave foranea con varchar

Publicado por Wilson (5 intervenciones) el 15/11/2019 17:39:19
He estado haciendo diferentes pruebas y todo ha salido bien, al parecer era cuestión de sintaxis, me ayudo mucho el query que me envio muchas gracias.

bueno si no es molestia quiero preguntar si es posible usar AUTO_INCREMENT con VARCHAR, aunque lo he estado haciendo con INT para no complicar las cosas, pero tengo esa duda. Gracias por su tiempo buen dia.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Llave foranea con varchar

Publicado por david (1 intervención) el 24/03/2020 20:27:49
muchas veces el error lo cometes en phpmyadmin por que cuando estas creaando un atributo varchar este te pide la longitud bueno si es llave primaria entonces en tu tabla donde el campo es foraneo tambien tienes que colocarle la logitud y ya haces el proceso consecuente que es
foreign key (campo) references Nom_Tabla_referenciada(Campo_referenciado)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar