Expertos alertan: fallos en el diseño de SQL pueden causar errores graves de concurrencia

Fuentes: SQL: Incorrect by Construction

Expertos advierten que el diseño de SQL y los sistemas de bases de datos relacionales facilita la introducción accidental de errores graves de simultaneidad (concurrency bugs). A través de un ejemplo de transferencia de dinero entre dos cuentas, los desarrolladores muestran tres vulnerabilidades críticas: el problema de atomicidad, que puede generar pérdida de dinero si la transacción se interrumpe a mitad de proceso; el error TOCTOU (Time-of-check to time-of-use), donde la verificación del saldo se realiza antes del retiro, permitiendo sobregiros; y los deadlocks, donde dos transacciones quedan bloqueadas esperando los bloqueos de la otra. Los expertos proponen soluciones como ajustar niveles de aislamiento, usar bloqueos de fila (UPDLOCK) y adquirir todos los bloqueos necesarios al inicio de cada transacción. El artículo concluye que el código SQL que parece correcto puede contener errores serios, y sugiere que futuras bases de datos adopten un enfoque similar al de Rust, haciendo que el comportamiento correcto sea la opción predeterminada.