Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Crear relación opcional en PHPMyAdmin

Estas en el tema de Crear relación opcional en PHPMyAdmin en el foro de Mysql en Foros del Web. Hola quiero crear una relación entre dos tablas opcional. Tengo una tabla de productos y otra de marcas, pero hay productos que no tienen marca. ...
  #1 (permalink)  
Antiguo 14/04/2020, 15:35
 
Fecha de Ingreso: mayo-2003
Mensajes: 514
Antigüedad: 17 años, 5 meses
Puntos: 6
Crear relación opcional en PHPMyAdmin

Hola quiero crear una relación entre dos tablas opcional. Tengo una tabla de productos y otra de marcas, pero hay productos que no tienen marca.

Yo quiero que si se carga una marca sea una de la tabla marcas, pero que también pueda quedar nula.

Lo que intenté fue marcar el campo que hace de clave foránea como Nulo, pero sin embargo cuanto intento cargar un producto sin marca me sale el error:

annot add or update a child row: a foreign key constraint fails (`aerecor_recordparts`.`productos`, CONSTRAINT `productos_ibfk_1` FOREIGN KEY (`marcas_id_marca`) REFERENCES `marcas` (`id_marca`))

La herramienta con la que estoy trabajando es PHPMyAdmin.

¿Qué estoy haciendo mal?
  #2 (permalink)  
Antiguo 14/04/2020, 20:39
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 12 años, 11 meses
Puntos: 2656
Respuesta: Crear relación opcional en PHPMyAdmin

La tabla PRODUCTOS tiene definido el campo MARCAS_ID_MARCAS como NOT NULL. Para hacerlo viable tiene que ser nulable.

Postea el CREATE TABLE de PRODUCTOS y veamos.

¿Sabes como obtener la sentencia de creación?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 09/07/2020, 10:26
 
Fecha de Ingreso: mayo-2003
Mensajes: 514
Antigüedad: 17 años, 5 meses
Puntos: 6
Respuesta: Crear relación opcional en PHPMyAdmin

Muchas gracias por la respuesta y perdón por la demora. Lo había solucionado horriblemente eliminando la relación entre los productos y las marcas...
Jamás había escuchado esto de nulable ¿cómo se hace para establecer esa propiedad desde PHPMyAdmin?
Aquí pego la sentencia CREATE que me pedías:

CREATE TABLE `productos` (
`id_producto` int(11) NOT NULL,
`codigo` varchar(255) NOT NULL,
`orden` int(11) DEFAULT NULL,
`activo` varchar(1) DEFAULT NULL,
`foto` varchar(255) NOT NULL DEFAULT '',
`foto_grande` varchar(255) DEFAULT NULL,
`nombre` varchar(255) NOT NULL DEFAULT '',
`descripcion_corta` varchar(255) NOT NULL DEFAULT '',
`descripcion` longtext NOT NULL,
`id_categoria` varchar(50) DEFAULT NULL,
`archivo_adjunto` varchar(255) DEFAULT NULL,
`oferta` varchar(1) DEFAULT NULL,
`novedad` varchar(1) DEFAULT NULL,
`precio_distribuidor` double DEFAULT NULL,
`precio_minorista` double DEFAULT NULL,
`precio_publico` double DEFAULT NULL,
`stock` varchar(1) DEFAULT NULL,
`marcas_id_marca` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;



La zona horaria es GMT -6. Ahora son las 19:16.