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

Update en NULL en campo NOT NULL

Estas en el tema de Update en NULL en campo NOT NULL en el foro de Mysql en Foros del Web. Que tal... Hace unos dias que vengo con esto y la verdad me pone un poco nervioso.. El tema es que tengo la estructura de ...
  #1 (permalink)  
Antiguo 26/10/2005, 13:16
Avatar de Tx
Tx
 
Fecha de Ingreso: enero-2002
Ubicación: Cba - Arg
Mensajes: 188
Antigüedad: 22 años, 3 meses
Puntos: 1
Update en NULL en campo NOT NULL

Que tal...

Hace unos dias que vengo con esto y la verdad me pone un poco nervioso..
El tema es que tengo la estructura de la tabla de la siguiente manera:

Código:
CREATE TABLE tabla (
  id int(10) unsigned NOT NULL auto_increment,
  nombre varchar(100) NOT NULL default '',
  PRIMARY KEY  (id),
  UNIQUE KEY nombre (nombre),
  UNIQUE KEY id (id)
) ENGINE=MyISAM;
Como corresponde, si hago un "INSERT INTO tabla(nombre) VALUES(NULL)", la BD me devuelve el error.

Ahora si hago un "UPDATE tabla SET nombre = NULL", esto me devuelve "Query OK, 0 rows affected (0,01 sec)", osea que la operación se realizó correctamente, y si veo que fué lo que guardó, no fue un valor NULL, sino '', como el valor por defecto.

Alguien me puede explicar como es esto?
La verdad que necesito que se genere el error y no me cambie el valor por ''.

Saludos y muchas gracias....

PD:me olvidaba, mi version de MySQL es la 4.1.15

Última edición por Tx; 26/10/2005 a las 13:23
  #2 (permalink)  
Antiguo 27/10/2005, 01:19
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
Efectivamente tu le indicas que nombre no puede ser NULL, luego si insertas cualquier cosa y nombre no lo asignas o asignas NULL te inserta el valor por defecto ''.
  #3 (permalink)  
Antiguo 27/10/2005, 12:51
Avatar de Tx
Tx
 
Fecha de Ingreso: enero-2002
Ubicación: Cba - Arg
Mensajes: 188
Antigüedad: 22 años, 3 meses
Puntos: 1
Gracias por contestar...
Conoces si es una característica de MySQL o es Bug?

Hasta pronto....
  #4 (permalink)  
Antiguo 28/10/2005, 00:25
Avatar de Jose_minglein2  
Fecha de Ingreso: noviembre-2004
Mensajes: 2.344
Antigüedad: 19 años, 5 meses
Puntos: 8
No es un bug ni tampoco creo que sea una característica exclusiva de MySQL, es decir,

tu dices que el campo no puede ser null, y haces una inserción, luego como el campo no puede ser NULL pues le pone el valor por default. Para eso son los valores por default pienso yo, si no que el campo si que permita NULL.
  #5 (permalink)  
Antiguo 28/10/2005, 08:58
Avatar de haron  
Fecha de Ingreso: febrero-2004
Ubicación: Cádiz (refinitivo)
Mensajes: 632
Antigüedad: 20 años, 2 meses
Puntos: 3
creo que no es un bug, pero tampoco es una caracteristica que desearia de una base de datos seria.

los gestores de bases de datos son como las personas, tienen sus cosas buenas y sus cosas malas.
__________________
Si ocurre algo importante, estamos afuera fumándonos unos cigarritos.
  #6 (permalink)  
Antiguo 28/10/2005, 12:56
Avatar de Tx
Tx
 
Fecha de Ingreso: enero-2002
Ubicación: Cba - Arg
Mensajes: 188
Antigüedad: 22 años, 3 meses
Puntos: 1
Muchisimas gracias por sus opiniones.

El problema no es con el INSERT sino con el UPDATE, que en vez de devolver un error me cambia el valor NULL por el valor por defecto '', y no me permite elegir que no le ponga valor por defecto u otra cosa similar.
Creo que como bien dice haron es una carcateristica poco deseable para una base de datos.

Entre idas y vueltas, anduve preguntando por todos lados, hasta llegar al news de MySQL (lists.mysql.com), donde me contestó Joerg Bruehe, un ingeniero de MySQL AB, que es algo que que no se hizo en versiones anteriores y hacerlo ahora produciria problemas en las aplicaciones anteriores; por eso con la nueva version, la 5, viene con diferentes modos, entre ellos el modo "strict", que soluciona este problema.

http://dev.mysql.com/doc/refman/5.0/...alid-data.html
http://dev.mysql.com/doc/refman/5.0/...-sql-mode.html

Abra que actualizarse a la nueva version y esperar que los servidores web lo implementen.

Saludos...
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 11:41.