SQLite necesita ediciones al estilo Rust para corregir sus peligrosos valores por defecto

Fuentes: SQLite should have (Rust-style) editions

SQLite, el motor de bases de datos embebidas más usado del mundo, presenta dos valores por defecto problemáticos que pueden provocar errores silenciosos difíciles de detectar. El artículo propone adoptar el concepto de "ediciones" inspirado en Rust para resolverlos de forma global.

El primer defecto es que SQLite ignora por defecto las restricciones de claves foráneas. Combinado con la reutilización de ROWID, esto provoca que, tras borrar un usuario sin eliminar sus registros asociados, un nuevo usuario herede datos del anterior sin que se genere ningún error. La solución requiere habilitar manualmente el pragma PRAGMA foreign_keys = ON;.

El segundo defecto es la validación laxa de tipos. Una columna declarada como INTEGER acepta cadenas de texto que representen números y las convierte, pero también guarda textos cualesquiera sin error. Esto permite introducir datos incoherentes, como una cadena aleatoria en una columna booleana. Las "strict tables" solucionan el problema, pero hay que indicarlo tabla por tabla, sin un pragma global.

El autor argumenta que un mecanismo de ediciones (similar al de Rust 2015/2018/2021) permitiría activar por defecto comportamientos seguros —claves foráneas activas, tablas estrictas— para nuevos proyectos, manteniendo la compatibilidad con código existente. Esto acercaría SQLite a las garantías de integridad que ofrecen PostgreSQL, MySQL u Oracle sin romper el ecosistema.