java - 插入表时如何避免数据不一致
问题描述
A 是表
a1 是 A 中的主键
a2 是 A 中的另一个字段
我创建了一个基于 Java Web 的应用程序并部署在 Wildfly 服务器中。字段 a1 是最终用户的只读字段,它将显示表 A 中的最大行数,a2 是可编辑字段。现在考虑两个最终用户同时访问此应用程序并尝试将数据插入表 A。这两个用户将看到字段 a1 的相同值并在字段 a2 中给出不同的值。现在两个用户都提交了应用程序并将数据插入 A。这将导致为字段 a1 插入具有相同值的两行。但是字段 a1 是主键。所以它应该有不同的价值。
在表 A 中插入数据时如何防止这种情况发生?这里我们需要应用线程概念吗?
解决方案
使用 ID 生成器。可能有不同的类型,例如基于 Oracle 中的数据库序列,基于 MySQL 中的自动增量。
这里有一些很好的例子:
推荐阅读
- python - TensorFlow 2 LSTM 仅产生 1 个预测
- python - 在方法的签名中调用的模拟方法
- flutter - 在您释放屏幕之前继续切换图片的颤振代码
- java - 如何使用 Java 处理 Selenium 中的 Wikipedia 下拉列表
- r - 使用 R 进行带有名称存根的重塑
- angular - ngModel 和输入的更改方法不起作用
- python - 使用 NLTK 和 pandas 将文本标记为 3 个句子
- powershell - 将子文件夹文件合并为一个文件(不包括当前文件夹文件)
- google-apps-script - 脚本从单元格中提取日期,重新格式化,并使用它来搜索驱动器不工作:(
- apache-kafka-streams - 使用抑制对 KTable 进行速率限制更新时故意丢弃状态