java - 如果在 android 中的 SQLite 事务期间,第二个线程尝试在同一个表上进行事务,会发生什么情况?

标签 java android sqlite transactions

我不太了解 Android 中 SQLite 事务的正确使用模式。

假设方法 A 启动了一个事务。在事务执行期间,另一个方法 B 将尝试在同一张表(可能在同一行)上执行事务。

会发生什么?

方法B是否会“等待”直到方法A完成事务,然后执行事务? 还是方法B交易会失败?

我该如何正确处理?

更准确地说:

  • 方法 A 应该查询(在事务内)某一行是否已经存在,如果存在,则返回该行,如果该行尚不存在,则应插入该行,并返回新插入的行。
  • 方法 B 应查询(在事务内)某行是否已存在,更新该行,如果该行尚不存在,方法 B 应插入该行。

这个想法是为了确保,无论首先执行哪个方法,都已经插入或更新了该特定行 我什至不确定,如果这些可以在 SQLite 事务级别上实现,或者我是否必须在 Java 中同步方法?

如果是这样,任何人都可以发布一个例子,这样的同步必须如何用 Java 编码?

最佳答案

如果“A”在事务中修改了一个表,“B”应该被阻塞(在 SQLite 本身内部)直到“A”被提交。除了处理持久数据外,它与 java 同步非常相似。一些细节取决于隔离级别

http://en.wikipedia.org/wiki/Isolation_(database_systems )

关于java - 如果在 android 中的 SQLite 事务期间,第二个线程尝试在同一个表上进行事务,会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9935856/

相关文章:

java - super,this,静态绑定(bind)动态绑定(bind)

java - 如何使用 Selenium WebDriver 导航并单击网页上的按钮?

android - 带有手动 ID(主键)的 SQLITE INSERT

sql - 获取两个日期之间的每一行的最大值?

sqlite - Safari 浏览器历史数据库是否包含转换类型?

Java 与 Delphi 5

java - 在当前项目和存储库中可用的插件组 [] 中未找到前缀 'war' 的插件

android - 安卓游戏

Android:如何从视频 (Uri) 获取缩略图

android - 应用程序关闭时蓝牙设备会断开连接