En el cap铆tulo anterior vimos c贸mo utilizar NULL y NOT NULL para controlar si una columna puede o no quedar sin informaci贸n.
Sin embargo, existe una situaci贸n muy com煤n:
¿Qu茅 ocurre cuando no quiero que el usuario capture un valor, pero tampoco quiero almacenar NULL?
Para estos casos PostgreSQL proporciona la restricci贸n DEFAULT.
馃 ¿Qu茅 es DEFAULT?
DEFAULT permite asignar un valor predeterminado a una columna cuando el usuario no proporciona uno durante un INSERT.
En otras palabras:
Si no se especifica un valor, PostgreSQL utilizar谩 autom谩ticamente el valor definido en DEFAULT.
馃彈️ Sintaxis
La cl谩usula DEFAULT se define durante la creaci贸n de la tabla.
Ejemplo:
En este caso:
- Si se proporciona un valor para
activo, PostgreSQL lo utilizar谩. - Si no se proporciona, PostgreSQL asignar谩
TRUE.
✅ Primer Ejemplo
Crear la tabla
Insertar un registro sin especificar el campo activo
Observa que no enviamos ning煤n valor para activo.
Consultar los datos
Resultado:
PostgreSQL asign贸 autom谩ticamente el valor definido en DEFAULT.
✏️ Insertar un valor diferente al DEFAULT
El valor predeterminado no es obligatorio.
Si especificamos un valor durante el INSERT, PostgreSQL utilizar谩 ese valor.
Consultar:
Resultado:
馃搮 DEFAULT con fechas
Uno de los usos m谩s frecuentes es almacenar autom谩ticamente fechas de creaci贸n.
Crear tabla
Insertar registro
Consultar
Resultado:
PostgreSQL asign贸 autom谩ticamente la fecha actual.
馃晵 DEFAULT con Timestamp
Tambi茅n es muy com煤n registrar autom谩ticamente la fecha y hora de creaci贸n.
Insertar:
Consultar:
Resultado:
馃敘 DEFAULT para n煤meros
Tambi茅n podemos definir valores num茅ricos predeterminados.
Insertar:
Resultado:
馃摑 DEFAULT para texto
Insertar:
Consultar:
Resultado:
⚠️ Diferencia entre NULL y DEFAULT
Es importante entender esta diferencia.
Supongamos la siguiente tabla:
Caso 1: No enviar el valor
Resultado:
Se utiliza el valor definido en DEFAULT.
Caso 2: Insertar NULL expl铆citamente
Resultado:
En este caso PostgreSQL no utiliza el valor por defecto porque el usuario proporcion贸 expl铆citamente un valor: NULL.
馃敀 Combinando NOT NULL y DEFAULT
Es muy com煤n utilizar ambas restricciones juntas.
Beneficios:
- No se permiten valores nulos.
- Si el usuario no env铆a un valor, PostgreSQL utiliza el valor predeterminado.
Ejemplo:
Resultado:
馃敡 Agregar DEFAULT a una columna existente
Supongamos que la tabla ya existe.
A partir de ese momento, los nuevos registros utilizar谩n ese valor predeterminado.
馃敡 Eliminar DEFAULT
Si ya no deseas un valor por defecto:
馃И Ejemplo Completo
Crear tabla
Insertar registros
Consultar
Resultado aproximado:
Observa c贸mo PostgreSQL asign贸 autom谩ticamente los valores de las columnas que no fueron proporcionadas.
馃挕 Buenas pr谩cticas
Utiliza DEFAULT para valores frecuentes
Por ejemplo:
Automatiza fechas de creaci贸n
Combina DEFAULT con NOT NULL
Esto evita valores nulos y simplifica los INSERT.
Evita valores por defecto que puedan generar confusi贸n
Por ejemplo:
En algunos sistemas podr铆a ser dif铆cil distinguir entre:
- Salario realmente igual a 0
- Salario a煤n no capturado
Analiza cada caso de negocio antes de definir el valor predeterminado.
✅ Conclusi贸n
La restricci贸n DEFAULT permite que PostgreSQL asigne autom谩ticamente valores cuando una columna no es incluida en un INSERT.
Los conceptos m谩s importantes son:
DEFAULTdefine un valor predeterminado.- Solo se utiliza cuando la columna no recibe un valor durante el
INSERT. - Puede utilizarse con n煤meros, texto, fechas, timestamps y valores booleanos.
- Es com煤n combinarlo con
NOT NULL. - Ayuda a simplificar las inserciones y mantener la consistencia de los datos.
No hay comentarios:
Publicar un comentario