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

Mysql not null NO Funciona

Estas en el tema de Mysql not null NO Funciona en el foro de Mysql en Foros del Web. hola a todos... el problema es este creo una tabla create table ge_tnull (null_null int not null auto_increment, null_nomb varchar(20) not null, null_apel varchar(20), null_nume ...
  #1 (permalink)  
Antiguo 17/11/2012, 15:42
 
Fecha de Ingreso: noviembre-2012
Mensajes: 1
Antigüedad: 11 años, 5 meses
Puntos: 0
Mysql not null NO Funciona

hola a todos... el problema es este
creo una tabla
create table ge_tnull
(null_null int not null auto_increment,
null_nomb varchar(20) not null,
null_apel varchar(20),
null_nume int not null,
constraint pk_ge_tnull primary key (null_null)
);

le ingreso estos datos

insert into ge_tnull
(null_nomb, null_apel, null_nume)
values
('juan', 'gomes', 3);

bien hasta aqui...
consulto

select * from ge_tnull

+-----------+----------------+-------------+------------------+
| null_null | null_nomb | null_apel | null_nume |
+-----------+----------------+-------------+------------------+
| 1 | juan | gomes | 3 |
+-----------+----------------+-------------+------------------+

luego inserto esto datos (creyendo que no se hara la operacion por los not null)

insert into ge_tnull
-> (null_nume)
-> values
-> (3);
Query OK, 1 row affected, 1 warning (0.07 sec)

mi pregunta es...
acaso esta sentencio no se puede hacer pues el campo null_nomb no permite nulos???
y luego hago esta consulta

select *
from ge_tnull
where null_nomb = ' '

y me trae el registro.......

como si Mysql incertara un espacio en blanco
  #2 (permalink)  
Antiguo 17/11/2012, 16:50
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Mysql not null NO Funciona

Primero: El warning que te indica como resultado es precisamente el rechazo del INSERT.
Segundo: La consulta que haces está mal si lo que deseas es obtener el registro donde esa columna contiene NULL, porque un espacio vacío no es un NULL. Un NULL es una indeterminación de estado y no un dato, por lo que no funciona un "=" para encontrarlo. La consulta correcta debería ser:
Código MySQL:
Ver original
  1. from ge_tnull
  2. where null_nomb IS NULL;

Ahora bien, si compruebo tus mismas sentencias con esto, tendría:
Código MySQL:
Ver original
  1. mysql> DROP TABLE IF EXISTS ge_tnull;
  2. Query OK, 0 rows affected (0.19 sec)
  3.  
  4. mysql> create table ge_tnull
  5.     -> (null_null int not null auto_increment,
  6.     -> null_nomb varchar(20) not null,
  7.     -> null_apel varchar(20),
  8.     -> null_nume int not null,
  9.     -> constraint pk_ge_tnull primary key (null_null)
  10.     -> );
  11. Query OK, 0 rows affected (0.00 sec)
  12.  
  13. mysql> insert into ge_tnull(null_nomb, null_apel, null_nume)
  14.     -> values('juan', 'gomes', 3);
  15. Query OK, 1 row affected (0.00 sec)
  16.  
  17. mysql> select * from ge_tnull;
  18. +-----------+-----------+-----------+-----------+
  19. | null_null | null_nomb | null_apel | null_nume |
  20. +-----------+-----------+-----------+-----------+
  21. |         1 | juan      | gomes     |         3 |
  22. +-----------+-----------+-----------+-----------+
  23. 1 row in set (0.00 sec)
  24.  
  25. mysql> insert into ge_tnull (null_nume)
  26.     -> values(3);
  27. ERROR 1364 (HY000): Field 'null_nomb' doesn''t have a default value
  28. mysql> select *
  29.     -> from ge_tnull
  30.     -> where null_nomb = ' ' ;
  31. Empty set (0.00 sec)
  32.  
  33. mysql> select *
  34.     -> from ge_tnull
  35.     -> where null_nomb IS NULL;
  36. Empty set (0.00 sec)
  37.  
  38. mysql>
  39. mysql> select *
  40.     -> from ge_tnull;
  41. +-----------+-----------+-----------+-----------+
  42. | null_null | null_nomb | null_apel | null_nume |
  43. +-----------+-----------+-----------+-----------+
  44. |         1 | juan      | gomes     |         3 |
  45. +-----------+-----------+-----------+-----------+
  46. 1 row in set (0.00 sec)
Como puedes ver, no existe en la tabla más que el registro ingresado al principio.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: null, select, sql, tabla, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:32.