我不太了解 Android 中 SQLite 事务的正确使用模式。
假设方法 A 启动了一个事务。在事务执行期间,另一个方法 B 将尝试在同一张表(可能在同一行)上执行事务。
会发生什么?
方法B是否会“等待”直到方法A完成事务,然后执行事务? 还是方法B交易会失败?
我该如何正确处理?
更准确地说:
- 方法 A 应该查询(在事务内)某一行是否已经存在,如果存在,则返回该行,如果该行尚不存在,则应插入该行,并返回新插入的行。
- 方法 B 应查询(在事务内)某行是否已存在,更新该行,如果该行尚不存在,方法 B 应插入该行。
这个想法是为了确保,无论首先执行哪个方法,都已经插入或更新了该特定行 我什至不确定,如果这些可以在 SQLite 事务级别上实现,或者我是否必须在 Java 中同步方法?
如果是这样,任何人都可以发布一个例子,这样的同步必须如何用 Java 编码?
最佳答案
如果“A”在事务中修改了一个表,“B”应该被阻塞(在 SQLite 本身内部)直到“A”被提交。除了处理持久数据外,它与 java 同步非常相似。一些细节取决于隔离级别
关于java - 如果在 android 中的 SQLite 事务期间,第二个线程尝试在同一个表上进行事务,会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9935856/