sql >> Base de Datos >  >> RDS >> Mysql

Insertar NULL en columnas NOT NULL con valor predeterminado

Según mi investigación, diría que podría ser tanto una cosa de "usted" como una cosa de "MySQL". Verifique las definiciones de su tabla con SHOW CREATE TABLE table_name; . Tome nota de cualquier campo definido con NOT NULL .

El Manual de referencia de MySQL 5.6:13.2.5 INSERT sintaxis estados:

Esto implicaría que no importa qué modo SQL esté utilizando. Si está haciendo una fila única INSERT (según su código de muestra) e insertando un NULL valor en una columna definida con NOT NULL , no se supone que funcione.

Al mismo tiempo, irónicamente, si simplemente omitiera el valor de la lista de valores, el manual de MySQL dice lo siguiente, y el modo SQL sí importa en este caso:

Por lo tanto, ¡no puedes ganar!;-) Bromear. Lo que hay que hacer es aceptar que NOT NULL en un campo de tabla MySQL realmente significa No aceptaré un valor NULO para un campo mientras realizo una sola fila INSERT , independientemente del modo SQL .'

Dicho todo esto, lo siguiente del manual también es cierto:

Así que anímate. Establezca sus valores predeterminados en la lógica comercial (objetos) y deje que la capa de datos tome la dirección a partir de eso. Los valores predeterminados de la base de datos parecen una buena idea, pero si no existieran, ¿los extrañaría? Si un árbol cae en el bosque...