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

Casteo MySQL

Estas en el tema de Casteo MySQL en el foro de Mysql en Foros del Web. Hola gente tengo una duda sobre mysql estoy realizando unas pruebas y quiero insertar datos desde php a MySql y me esta sucediendo lo siguiente ...
  #1 (permalink)  
Antiguo 04/06/2011, 13:08
 
Fecha de Ingreso: marzo-2009
Mensajes: 76
Antigüedad: 15 años, 1 mes
Puntos: 1
Casteo MySQL

Hola gente tengo una duda sobre mysql estoy realizando unas pruebas y quiero insertar datos desde php a MySql y me esta sucediendo lo siguiente por ejemplo tengo dos campos en mi BD uno es un precio y el otro una cantidad es decir entero sin signo les dejo como los tengo declarados

Precio - DECIMAL(19,4) - NOT NULL
Cantidad - INTEGER - NOT NULL

Bueno el problema que tengo es que por ejemplo a Precio le envio un string digamos 'P' y no me tira error sino que me lo castea y pone en la DB 0.0000 y quiero que falle.
Lo mismo pasa en cantidad le envio un string 'C' y me lo castea como 0 y de nuevo quiero que falle.

Alguien me puede decir como hago para que MySql me tire error en esos casos.

Desde ya muchas gracias.

NicoStone.
  #2 (permalink)  
Antiguo 04/06/2011, 15:10
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: Casteo MySQL

No te va a fallar porque MySQL realiza conversiones implícitas entre valores y columnas.
Eso se hace porque muchas interfases de datos (ODBC, por caso) manipulan los valores numéricos como si fuesen cadenas de texto y no numéricos. En tales casos lo que hace MySQL es tratar de insertar el valor indicado y cuando la conversión no se puede ejecutar, pone el valor devuelto por sus funciones internas o simplemente NULL.
Esto se implementó de esta forma para permitir, por ejemplo, que se pueda ingresar un '1' a un campo INT, o bien que '2011-4-22' pueda ser convertido a fecha aunque no se indique para ponerlo en un DATE. En otras palabras, hay muchas razones de peso para que existan las conversiones implícitas en los DBMS (no sólo en MySQL).
Además, ten en cuenta que MySQL no tiene métodos específicos para hacer cierto tipo de validaciones, y tampoco las necesita, porque esa tarea no se hace en las bases de datos. SQL no es un lenguaje de programación, es un lenguaje de consultas, por lo que se presupone que los datos han sido debidamente validados en la aplicacion antes de desperdiciar recursos de la base de datos en cosas que se hacen mejor de otro modo:Se hacen en los lenguajes de programación, que sí tienen funciones específicas para eso.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 05/06/2011, 12:30
 
Fecha de Ingreso: marzo-2009
Mensajes: 76
Antigüedad: 15 años, 1 mes
Puntos: 1
Respuesta: Casteo MySQL

Muchas gracias por tu explicación igual te comento que desde MySql se puede definir reglas de validacion con las Restricciones de dominio o asertos sino me equivoco, pero para mi caso no es mas sencillo realizar la validacion desde php.

Muchas gracias y saludos.

NicoStone
  #4 (permalink)  
Antiguo 05/06/2011, 15:12
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: Casteo MySQL

Cita:
Iniciado por nicostone Ver Mensaje
Muchas gracias por tu explicación igual te comento que desde MySql se puede definir reglas de validacion con las Restricciones de dominio o asertos sino me equivoco, pero para mi caso no es mas sencillo realizar la validacion desde php.

Muchas gracias y saludos.

NicoStone
Si te estás refiriendo a los CONSTRAINT CHECK, esto no existen en MySQL. Existen en Oracle y SQL Server, pero no en MySQL, por lo que no puedes hacer una restricción de ese tipo, ni siquiera por TRIGGER.
Personalmente, por lo que conozco de PHP, no deberías tener problemas en implementar las validaciones de datos en la aplicación (yo lo he hecho muchas veces, por lo que estoy seguro de eso). Si el problema es que no puedes modificar los scripts de PHP, eso es un tema ajeno a este foro, y es una limitante de tu proyecto. No de la capacidad del PHP o de lo que deberías hacer.
¿Por qué dices que no peudes hacerlo?
__________________
¿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: Ninguno
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 17:49.