首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLite SAVEPOINTS: ROLLBACK如何与发布一起工作?

SQLite SAVEPOINTS: ROLLBACK如何与发布一起工作?
EN

Stack Overflow用户
提问于 2017-05-24 15:49:48
回答 1查看 635关注 0票数 0

我可能误解了SQLite中关于SAVEPOINTS的一些东西。

我在一个应用程序中使用了case,在这个应用程序中,我们运行了一堆插入,如果有什么失败,我们应该一起放弃所有的插入。

我知道我可以为这样一个简单的场景开始事务,但我担心这个场景可能会变得更加复杂,嵌套可能成为一个要求,这就是我选择SAVEPOINTS的原因。

总之,下面是我运行的SQL语句的摘录:

代码语言:javascript
复制
SQL> SAVEPOINT SAVEPOINT_20170524_172706;
SQL> INSERT, SELECT STATEMENT (no COMMIT or END TRANSACTION)
SQL> ROLLBACK TO SAVEPOINT SAVEPOINT_20170524_172706;
SQL> RELEASE SAVEPOINT_20170524_172706;

基本上,在开始从数据库中插入和选择数据之前,我根据时间戳创建一个新的保存点。然后一个操作失败,我需要退出,所以我回滚到我刚刚创建的保存点。最后,我想摆脱我不再需要的保存点,因为我不想用无用的保存点来扰乱数据库,所以我运行了发布版。在这种情况下,我发现自己在数据库中填充了由本应回滚的语句插入的所有数据。

如果我不执行发布语句,那么数据库看起来就很好了,但是我想知道废弃的保存点会发生什么,因为它再也不会被引用了。

我在做哪一个错误的假设?如果我不释放SAVEPOINTS,那么当我关闭到DB文件的“连接”时,它们会被“丢弃”吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-25 07:32:32

我有PRAGMA journal_mode = OFF

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44163159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档