6
我在我的本地主机(Win NT)上有sqlite数据库并且想备份它。我想用shell命令'.backup'来完成这个任务。但似乎我可以在备份过程中将新行插入到数据库中。sqlite3 shell命令'.backup'和事务
'.backup'shell命令对我的数据库启动新的独占事务吗?
我想当我执行'.backup'shell命令时,它锁定了我的数据库。
我在我的本地主机(Win NT)上有sqlite数据库并且想备份它。我想用shell命令'.backup'来完成这个任务。但似乎我可以在备份过程中将新行插入到数据库中。sqlite3 shell命令'.backup'和事务
'.backup'shell命令对我的数据库启动新的独占事务吗?
我想当我执行'.backup'shell命令时,它锁定了我的数据库。
sqlite3备份方法不锁定数据库。我会建议使用以下解决方法,如果你想锁定数据库:
INSERT
语句时,数据库得到了保留锁。但是,此INSERT
语句可能为空。ROLLBACK
或COMMIT
结束交易。代码:
BEGIN;
INSERT INTO <anytable> SELECT * FROM <anytable> WHERE 1=0;
.backup <database> <file>
ROLLBACK;
一个不太哈克的方式是,如果你使用的是名为“备份”表,您为每个副本中插入一行(日期,..)(如果这些信息与你有关)。