SQLite es específicamente diseñado para protegerse de esto. Desde el funcionario SQLite is Transactional página:
Todos los cambios dentro de una única transacción en SQLite o bien se producen por completo o en absoluto, incluso si el acto de escribir el cambio a cabo en el disco es interrumpido por
- una caída del programa,
- una caída del sistema operativo, o
- un fallo de alimentación.
La afirmación del párrafo anterior es contrastados extensamente en el banco de pruebas de regresión SQLite utilizando un arnés de prueba especial que simula los efectos en un archivo de base de datos de sistema operativo se bloquea y el poder fracasos.
Puede que también le interese el artículo de SQLite Atomic Commit in SQLite si necesita conocer los detalles específicos sobre cómo protegerse contra fallas como las anteriores.
En cuanto a la escritura después de un accidente: (de
File Locking and Concurrency)
Se crea una revista caliente cuando un proceso está en medio de una actualización de base de datos y una caída del programa o el sistema operativo o el fracaso, evita la actualización de completar. Los diarios calientes son una condición de excepción. Existen revistas activas para recuperarse de fallas y fallas de energía. Si todo está funcionando correctamente (es decir, si no hay bloqueos ni fallas en el suministro eléctrico), nunca obtendrá un diario dinámico.
Lo peor que puede pasar es que deba eliminar el diario caliente que queda después de un bloqueo.
Gracias! También quiero saber si el archivo de base de datos (*. Db) seguirá siendo grabable si se produce un corte de energía mientras se escriben algunos cambios en la base de datos. – quantity
@quantity El bloqueo se realiza en el nivel del sistema operativo, por lo que después de una falla repentina y después de reiniciar, el código fschk debe borrar eso y se podrá volver a acceder al archivo.El bloqueo no se realiza cambiando los atributos del archivo. Además, a partir de las referencias de los artículos en la respuesta, está claro que los "diarios calientes" se manejan de forma automática cuando se accede al archivo DB. – Ber
Nunca debe eliminar un archivo de diario caliente. Consulte la documentación oficial: [Cómo corromper un archivo de base de datos SQLite] (http://www.sqlite.org/howtocorrupt.html), sección 1.3. –