Error SQL · obligatoriedad

NOT NULL falla: descubre por qué llega un valor ausente

NOT NULL falla cuando una operación intenta dejar una columna obligatoria sin valor. El diagnóstico correcto empieza por identificar qué columna recibe NULL y por qué, no por retirar la restricción.

Lectura: 13–17 minEjemplo reproduciblePráctica con pistas

El síntoma: una columna obligatoria recibe NULL

NOT NULL expresa que una columna no puede almacenar NULL. PostgreSQL y SQLite la documentan como una restricción de columna que se comprueba cuando se insertan o modifican filas.

Si falla, revisa el dato que llega a esa columna y el camino que lo produjo: una columna omitida sin valor predeterminado, un NULL explícito o una actualización que borra un valor existente.

Ejemplo reproducible: el nombre es obligatorio

Operación problemática
CREATE TABLE productos (
  id INTEGER PRIMARY KEY,
  nombre TEXT NOT NULL,
  activo INTEGER NOT NULL DEFAULT 1
);

INSERT INTO productos (id, nombre)
VALUES (1, NULL);

La columna nombre está presente en el INSERT, pero su valor es explícitamente NULL. La base debe rechazarlo porque contradice la regla declarada.

Corrige el origen del dato

Inserción válida
INSERT INTO productos (id, nombre)
VALUES (1, 'Teclado');

Observa además que activo puede omitirse porque tiene DEFAULT 1. Eso no significa que DEFAULT convierta un NULL explícito en 1: son conceptos distintos. Si proporcionas NULL a una columna NOT NULL, la operación sigue siendo inválida.

¿Y si la columna debería ser opcional?

Entonces la pregunta cambia: quizá la restricción no representa correctamente el dominio. Antes de alterar la tabla, confirma si “desconocido” o “todavía no informado” es un estado válido para esa columna. Si lo es, documenta el cambio de modelo; si no, corrige el flujo que genera el dato ausente.

Método de diagnóstico

  1. Lee el nombre de la columna que señala el error.
  2. Revisa la lista de columnas del INSERT o el SET del UPDATE.
  3. Distingue columna omitida de NULL explícito.
  4. Comprueba DEFAULT solo si la columna puede obtener un valor automático válido.
  5. Cambia el esquema únicamente si la obligatoriedad era incorrecta.

Error frecuente: pensar que DEFAULT sustituye cualquier NULL

Omitir una columna y asignarle NULL no es lo mismo

Un valor predeterminado puede aplicarse cuando la operación no proporciona un valor para esa columna. Un NULL explícito sigue siendo un valor nulo y viola NOT NULL.

Práctica correctiva

Básica · restricciones

Corrige una fila incompleta

La tabla clientes tiene email TEXT NOT NULL. La aplicación intenta guardar email = NULL. ¿Qué comprobarías antes de quitar la restricción?

Qué debes recordar

  • NOT NULL protege la obligatoriedad de una columna.
  • Un NULL explícito no se arregla con un DEFAULT.
  • Distingue un dato ausente de una regla de modelo incorrecta.
  • No quites la restricción sin entender por qué falta el valor.

Conceptos relacionados

Fuentes técnicas consultadas