Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/11/2012, 02:27
alyciashape
 
Fecha de Ingreso: abril-2012
Mensajes: 590
Antigüedad: 12 años
Puntos: 58
PHPMyAdmin definir campos no nulos

Estoy haciendo una BD de 0 y es bastante grande y quería que estuviera bien diseñada.

El problema que me encontré, es, que acabo de crear la primera tabla pero no me hace ni caso a la propiedad "not null".

Veamos este ejemplo.
usuario
• id_usuario (int autoincremental primary key)
• apodo (varchar 255 NO NULO y UNIQUE)
• nombre_completo (varchar 255)
• password (varchar 255 NO NULO)

Pues bien, creo la tabla desde PHPMyAdmin, hasta ahí todo bien, en el apartado nulo en apodo y password se lo marco y en los otros no, porque imagino que por defecto querrá decir que acepta nulos.

Por probar de ver que me da el error intento añadir un registro con todo en blanco... y me lo añade perfectamente. Con algunos campos en not null y otros no. No entiendo nada.

Estoy dandole vueltas y probando cosas y no hay manera. Además, en los que le marco el checkbox, sino meto nada en lugar de dar error me añade NULL en la casilla, pero el registro lo añade igual.

Por cierto, en cuanto al UNIQUE para un campo PRIMARY KEY ya lo da por hecho no? no hace falta decirle también unique.

Para más info la base de datos es MySQL por supuesto y uso el motor InnoDBl.

También he probado así y el resultado es el mismo, al intentar añadir datos con todos los campos en blanco (desde el propio phpmyadmin) te deja añadirlos igual, sólo que en algunos te pone NULL y otros salen en blanco.

Código SQL:
Ver original
  1. CREATE  TABLE `gestion_clientes`.`usuario` (
  2.   `id_usuario` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
  3.   `apodo` VARCHAR(255) NOT NULL ,
  4.   `password` VARCHAR(255) NOT NULL ,
  5.   `nombre_completo` VARCHAR(255) NULL ,
  6.   PRIMARY KEY (`id_usuario`) ,
  7.   UNIQUE INDEX `apodo_UNIQUE` (`apodo` ASC) )
  8. ENGINE = InnoDB
  9. DEFAULT CHARACTER SET = utf8
  10. COLLATE = utf8_general_ci;

Última edición por alyciashape; 27/11/2012 a las 02:35