Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/03/2015, 22:18
TrucosJuan
 
Fecha de Ingreso: noviembre-2006
Mensajes: 166
Antigüedad: 17 años, 5 meses
Puntos: 6
Cambiar clave foránea NOT NULL

Tengo la siguiente tabla "users" en mi base de datos:
** Lo siguiente es un resumen, ya que he borrado algunos campos que no vienen al caso (no son claves foráneas, solo datos personales de cada usuario):
Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `users` (
  2.   `username` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  3.   `password` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
  4.   `acceso` smallint(6) NOT NULL DEFAULT '0',
  5.   `email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  6.   `full_name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  7.   `sexo` enum('femenino','masculino') COLLATE utf8_unicode_ci NOT NULL,
  8.   `pais_id` int(10) unsigned NOT NULL,
  9.   `direccion` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
  10.   `first_package_id` int(10) unsigned NOT NULL,
  11.   `promoter_id` int(10) unsigned NOT NULL,
  12.   `upline_id` int(10) unsigned NOT NULL,
  13.   `side_upline` enum('left','right') COLLATE utf8_unicode_ci NOT NULL,
  14.   `side_referrals` enum('left','right','less') COLLATE utf8_unicode_ci NOT NULL DEFAULT 'left',
  15.   PRIMARY KEY (`id`),
  16.   UNIQUE KEY `users_username_unique` (`username`),
  17.   KEY `users_pais_id_foreign` (`pais_id`),
  18.   KEY `users_first_package_id_foreign` (`first_package_id`),
  19.   KEY `users_promoter_id_foreign` (`promoter_id`),
  20.   KEY `users_upline_id_foreign` (`upline_id`)
  21. ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=2 ;
  22.  
  23. --
  24. -- Filtros para la tabla `users`
  25. --
  26. ALTER TABLE `users`
  27.   ADD CONSTRAINT `users_first_package_id_foreign` FOREIGN KEY (`first_package_id`) REFERENCES `packages` (`id`),
  28.   ADD CONSTRAINT `users_pais_id_foreign` FOREIGN KEY (`pais_id`) REFERENCES `paises` (`id`),
  29.   ADD CONSTRAINT `users_promoter_id_foreign` FOREIGN KEY (`promoter_id`) REFERENCES `users` (`id`),
  30.   ADD CONSTRAINT `users_upline_id_foreign` FOREIGN KEY (`upline_id`) REFERENCES `users` (`id`);

Esta tabla ya contiene una serie de datos, aproximadamente 100 registros en un pequeño sistema que hice y que se encuentra funcionando.
Lo que quiero hacer es que "promoter_id" que es una clave foránea NOT NULL admita ahora valores nulos.

EDIT:
Luego de buscar, conseguí hacerlo de esta forma:
Código MySQL:
Ver original
  1. ALTER TABLE users MODIFY promoter_id INT(10) UNSIGNED;
Me base en este enlace: http://stackoverflow.com/questions/1...key-constraint