InicioLinuxMySQL ignora restricciones CHECK al crear una tabla

MySQL ignora restricciones CHECK al crear una tabla

Linux2/12/2011
Una de las cosas que no sabía (tal vez porque no había leído la documentación con más detenimiento) es que en el momento de crear una tabla en en un manejador de base de datos, puedo agregar restricciones para mantener cierta integridad en la data al momento de que se esté populando dicha tabla. Algo bastante útil al momento de diseñar la base de datos de alguna aplicación.

Sucede que MySQL, no se si por amor al arte, decide ignorar la sentencia “CHECK” para las restricciones. Es decir, si creo la siguiente tabla:

CREATE TABLE `prueba`.`persona` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT ,
`nombre` VARCHAR( 50 ) NOT NULL ,
`edad` TINYINT UNSIGNED NOT NULL ,
PRIMARY KEY ( `id` ),
CHECK (`edad` < 150)
) ENGINE = MYISAM COMMENT = 'Tabla correspondiente a una persona'

Tendría algo como lo siguiente:

+--------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| nombre | varchar(50) | NO | | NULL | |
| edad | tinyint(3) unsigned | NO | | NULL | |
+--------+---------------------+------+-----+---------+----------------+

Excelente, hasta ahora…

El problema es que si trato de insertar algún record que viole dicha restriccion, MySQL simplemente lo ignorará, lo que te puede llevar a severas (muy graves) corrupciones de data en caso de que la integridad de la misma dependa directamente de las restricciones de cada tabla.

Si ejecuto la siguiente sentencia:

INSERT INTO `prueba`.`persona` (
`id` ,
`nombre` ,
`edad`
)
VALUES (
NULL , 'Don Juan de los Palotes', '190'
);

Obtendré lo siguiente:

Inserted rows: 1
Inserted row id: 4

Detallitos como estos son los que me han movido a considerar seriamente migrar para PostgreSQL.

Saludos,


Datos archivados del Taringa! original
5puntos
1,998visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
1visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

j
jespinal🇦🇷
Usuario
Puntos0
Posts16
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.