guia - tablas en sqlite
Comando de shell sqlite3 ''.backup'' y transacción (1)
El método de copia de seguridad sqlite3 no bloquea la base de datos. Sugeriría utilizar la siguiente solución alternativa si desea bloquear la base de datos:
- Comience una transacción (bloqueo compartido)
- Al usar cualquier
INSERT
, la base de datos obtiene un bloqueo reservado. Sin embargo, estaINSERT
puede estar vacía. - Respalda la base de datos.
- Termine la transacción usando
ROLLBACK
oCOMMIT
.
Código:
BEGIN;
INSERT INTO <anytable> SELECT * FROM <anytable> WHERE 1=0;
.backup <database> <file>
ROLLBACK;
Una forma menos hacky sería si está utilizando una tabla llamada ''copia de seguridad'' y está insertando una fila (fecha, ..) para cada copia (si esta información es relevante para usted).
Tengo una base de datos sqlite en mi host local (Win NT) y quiero hacer una copia de seguridad. Quiero usar el comando de shell ''.backup'' para lograr esta tarea. Pero parece que puedo insertar nuevas filas en la base de datos durante el proceso de copia de seguridad.
¿El comando de shell ''.backup'' inicia una nueva transacción exclusiva en mi base de datos?
Pensé que cuando ejecuto el comando ''.backup'' shell, bloquea mi base de datos.