Introducción
Cuando diseñas una base de datos, una de las primeras metas es impedir que entren valores incoherentes.
Oracle SQL te lo pone fácil con las CHECK constraints: reglas que se ejecutan automáticamente cada vez que insertas o actualizas filas.
En este artículo aprenderás a:
- Qué es un
CHECKy por qué usarlo. - Añadirlo con
ALTER TABLE. - Probar que funciona (inserciones válidas e inválidas).
- Buenas prácticas para nombrar y mantener las restricciones.
El ejemplo completo
-- Check del tipo
ALTER TABLE propiedades
ADD CONSTRAINT ck_prop_tipo
CHECK (tipo IN ('V','L','A','T'));
| Parte | Significado |
|---|---|
ALTER TABLE propiedades | Vamos a modificar la estructura de la tabla PROPIEDADES. |
ADD CONSTRAINT ck_prop_tipo | Creamos una restricción nueva y le damos un nombre descriptivo (ck_…). |
CHECK (tipo IN ('V','L','A','T')) | Regla: la columna TIPO solo admite los valores 'V' (Vivienda), 'L' (Local), 'A' (Almacén) o 'T' (Trastero). |
1. ¿Por qué es importante un CHECK?
- Integridad: tus aplicaciones no tienen que recordar los códigos válidos; la BD los valida por ti.
- Mantenimiento: si haces un
UPDATE … SET tipo = 'X', Oracle lo bloqueará si el valor no figura en la lista. - Rendimiento: al estar dentro del motor, la comprobación es casi instantánea y se aplica a todas las sesiones.
2. Añadir la restricción paso a paso
- Conéctate a tu esquema desde SQL Developer / TOAD / SQL*Plus.
- Abre un Worksheet y pega el bloque anterior.
- Ejecuta (Ctrl+Enter) → Oracle responde
Table altered. - ¡Listo! El
CHECKya está activo.
3. Pruebas rápidas
-- ✅ Inserción correcta
INSERT INTO propiedades (codigo, descripcion, tipo)
VALUES (101, 'Ático 3ºA', 'V');
-- ❌ Inserción incorrecta
INSERT INTO propiedades (codigo, descripcion, tipo)
VALUES (102, 'Local esquina', 'B'); -- ORA-02290: check constraint violated
Tip: el mensaje
ORA-02290indica que la fila viola la restricciónCK_PROP_TIPO.
4. Deshabilitar / habilitar temporalmente
-- Deshabilitar
ALTER TABLE propiedades DISABLE CONSTRAINT ck_prop_tipo;
-- Volver a habilitar
ALTER TABLE propiedades ENABLE CONSTRAINT ck_prop_tipo;
Útil durante migraciones masivas, aunque solo si estás seguro de los datos que vas a cargar.
5. Buenas prácticas
| Recomendación | Motivo |
|---|---|
Prefijo del nombre (ck_) | Distinguir de pk_ (primary), fk_ (foreign), uk_ (unique). |
Valores cortos ('V','L','A','T') | Ocupan menos y se comparan más rápido. |
Columna TIPO en CHAR(1) | Evitas espacios en blanco accidentales; perfecto para códigos fijos. |
Documentar en el diccionario (COMMENT ON COLUMN) | Queda claro para el equipo qué significa cada letra. |
6. Conclusión
Las CHECK constraints son una herramienta sencilla y potentísima para mantener la calidad de tu información sin depender del código de la aplicación. Bastan tres líneas de SQL para blindar una columna entera.
¿Te quedaste con dudas? Déjalas en los comentarios y las resolvemos juntos. ¡Feliz modelado!
¿QUÉ TE HA PARECIDO EL ARTÍCULO? Danos tu opinión al final de la página.
Deja tu comentario y ayúdanos a crecer.
¡SÍGUENOS EN TUS REDES FAVORITAS!
AYUDANOS A CRECER Y QUE LLEGUEMOS A TODAS LAS PERSONAS QUE NOS NECESITANA. SÍGUENOS EN TUS REDES.
Entra AQUÍ y elíge donde seguirnos.

NUESTRAS ÚLTIMAS PUBLICACIONES
- ¡VOLVEMOS A NUESTROS HORARIOS HABITUALES!

- Especificadores de formato en C (printf/sprintf y scanf)

- Propuestas de actividades avanzadas con XML, DTD, XPath y XSLT

- Apuntes extensos de XML y XSLT

- El momento IDEAL para impulsar tu FORMACIÓN y alcanzar tus Metas Académicas: LAS NAVIDADES.

- 20 ejercicios de funciones avanzadas en Python (al estilo de Ackermann)

- Cómo guardar una página web completa en MySQL con PHP (urlencode, BLOB y otras técnicas)

- 60 ejercicios de funciones recursivas en Python para la carrera de Informática

- SIMULACRO 2 – FP Programación de Videojuegos

ELIGE TU RED FAVORITA Y SÍGUENOS.
AYUDANOS A CRECER Y A LLEGAR A TODAS LAS PERSONAS QUE NOS NECESITAN.
Contenido restringido





































































































































































































































































INFORMACIÓN SOBRE 







Comments are closed