Vamos a agregar algunos detalles conceptuales, que tienen que ver con buenas prácticas de desarrollo:
- Ningún desarrollador en su sano juicio deja que sea el usuario el que decida en qué orden serán puestos en un INSERT a la base los datos,
sin previamente validar todos y cada uno de ellos. ¿Nunca escuchaste que el mayor problema de todo software es la interface silla-teclado?
- Nunca se hace una interfaz donde haya
N formas de ordenar los datos de una tabla, porque entonces tendrás 2x10^n formas posibles de meter la pata (la formula es un chiste, pero la idea es esa).
Otra observación, adjunta a lo de Leo, es que tienes que entender que MySQL trabaja también en forma
contextual, y eso hace que bajo ciertas circunstancias, jamás podrías haber detectado
ni siquiera un warning. Sería el caso de que en lugar de poner un nombre, hubiese ingresado "109", como cadena de texto. MySQL simplemente hubiese convertido eso a número y tu ni te enteras.
Finalmente:
Cita: Mi idea es tratar de evitar de validar con PHP, y de hacerlo por MYSQL.
Eso es un error total, muy común en los programadores: No quieren tener que trabajar...
NO. No debes derivar una responsabilidad que es propia del lenguaje de programación (lógica de capa de negocios) a la base de datos, por
al menos tres razones:
1) Los lenguajes de programación tienen mucha más capacidad para hacer tareas de validación, entre otras cosas porque es en
programación donde controlas los formularios de ingreso de datos. ¿Escuchaste la expresión "a prueba de tontos"? Bueno, esa es la meta de todo buen desarrolador.
2) Poner las validaciones de ese nivel en la base de datos es dedicar tiempo de procesamiento a tareas complementarias, y desperdiciar la potencia de los DBMS en cosas para las que no han sido diseñados. El motor de base de datos está optimizado para consultas, no para validar cosas que debería recibir verificadas. Lo que sí existen es consultas de validación, que se implementan en la capa de acceso a datos, específicamente para eso, pero no son consultas dinámicas.
3) Transferir "datos basura" es un enorme desperdicio de recursos de red, que deberás eventualmente pagar en performance. Si vas a mandar datos no validados a la base, eso desperdicia accesos, red, y overhead de red, y tarde o temprano lo vas a lamentar. Además, los hosting te cobran extra si superas la cuota de transferencia de datos fijada, oprlo que te imaginarás que en tu modelo, sería desastroso.
No trates de inventar la rueda de nuevo. Por algo esas tareas no las hace así ninguna aplicación medianamente importante y estable: Porque no es eficiente.