【发布时间】:2012-04-04 08:18:36
【问题描述】:
我有一个可以轻松达到 1GB 的 SQLite 文件(可能变成 10GB)。我想为我的桌面应用程序(在 C++ 中)模拟“另存为”和自动保存功能,类似于 Office Word。 在我看来,每次要备份时都复制整个文件是不切实际的。
我刚刚开始调查SAVEPOINT。这是解决这个问题的方法吗?但我不清楚保存点是否允许我查询我刚刚在保存点之间进行的插入,直到我提交/释放。
我将不胜感激。
另外,退后一步,我正在考虑这种另存为/自动保存机制是否是个好主意。我目前正在将每个 SQL 命令立即保存到文件中(例如,将用户文本保存到表中的注释字段中)。我确实在应用程序中实现了撤消/重做功能。有人用大型 sqlite 文件制作桌面应用程序吗?
【问题讨论】:
-
SAVEPOINTS 用于交易。因此,您可以回滚事务的一部分,而不是全部。而且您真的不想在您的应用程序使用期间让事务保持打开状态(即使它是单个用户)。
-
感谢您的评论。我不想让交易保持开放是因为 1) 电源故障不会保留这些更改吗?和 2) 我无法查询未结交易中的更改?