Leyendo la doc, no me queda del todo claro como debo actuar :S
"InnoDB rechaza cualquier operación INSERT o UPDATE que intente crear un valor de clave foránea en una tabla hija sin un valor de clave candidata coincidente en la tabla padre"
Pero luego dice
"SET NULL: Borra o actualiza el registro en la tabla padre y establece en NULL la o las columnas de clave foránea en la tabla hija. Esto solamente es válido si las columnas de clave foránea no han sido definidas como NOT NULL. MySQL 5.0 soporta tanto ON DELETE SET NULL como ON UPDATE SET NULL"
Debo definir la tabla user_preferencias asignandole el set null??
Esta es mi definición actual, la debería cambiar según la doc de mysql?
Código SQL:
Ver originalCREATE TABLE `tbl_user_personal` (
`user_id` INT(10) UNSIGNED NOT NULL,
`user_name` VARCHAR(30) COLLATE utf8_spanish_ci NOT NULL,
`user_mail` VARCHAR(45) COLLATE utf8_spanish_ci NOT NULL,
`user_birthday` DATE NOT NULL,
`user_sexo` CHAR(1) COLLATE utf8_spanish_ci NOT NULL,
`user_pais` SMALLINT(5) UNSIGNED NOT NULL,
`user_provincia` INT(10) UNSIGNED DEFAULT NULL,
KEY `fk_user_personal_user` (`user_id`),
KEY `fk_user_pais` (`user_pais`),
KEY `fk_tbl_user_personal_tbl_provincias1` (`user_provincia`),
CONSTRAINT `fk_user_personal_user` FOREIGN KEY (`user_id`) REFERENCES `tbl_user` (`user_id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `fk_user_pais` FOREIGN KEY (`user_pais`) REFERENCES `tbl_paises` (`pais_id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `fk_tbl_user_personal_tbl_provincias1` FOREIGN KEY (`user_provincia`) REFERENCES `tbl_provincias` (`provincia_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_spanish_ci;
Muchas gracias de antemano