gpt4 book ai didi

java - SQLiteDatabase 嵌套事务和解决方法

转载 作者:IT王子 更新时间:2023-10-29 06:27:19 26 4
gpt4 key购买 nike

已编辑:
是的,SQLite doesn't support嵌套事务,但是 docs声明 SQLiteDatabase 确实如此。
情况
我有一个包含交易的方法,我需要从另一个交易中调用这个方法。
此外 - 两个事务处理同一组记录,但更新不同的列。
问题
看起来我的外部交易的结果被内部交易取消了,但两者仍然被 setTransactionSuccessful() 标记为干净并被 endTransaction() 完成 - 我已经检查过了。
问题
- 知道为什么会发生这种情况吗?
- 是否有推荐的方式进行此类交易?

最佳答案

“嵌套 Android 事务”使用 SQLites 嵌套事务/保存点支持。

而是嵌套的 Android 事务抑制显示 SQLite 事务。嵌套事务不能自身回滚,因为它不存在于外部事务之外。这可以be seen here使用 mTransactionStack == null 守卫。

实际上支持嵌套事务的唯一方法是手动使用 SAVEPOINT/RELEASE 命令——SQLite 支持,只是不支持 BEGIN/COMMIT。当然,将代码设计为不依赖于此将消除所需的额外手动管理。

(我可能会将所有事务工作从实际的单个操作中移出,将管理留给高级调用者;这对于 UoW 模式非常有效,但可能并不总是适用。)

关于java - SQLiteDatabase 嵌套事务和解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26106237/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com