插入表时如何避免数据不一致
Posted
技术标签:
【中文标题】插入表时如何避免数据不一致【英文标题】:how to avoid the inconsistency of data while inserting into table 【发布时间】:2020-01-10 10:46:27 【问题描述】:A 是一张桌子 a1 是 A 中的主键 a2 是 A 中的另一个字段
我创建了一个基于 Java Web 的应用程序并部署在 Wildfly 服务器中。字段 a1 是最终用户的只读字段 它将显示表 A 中的最大行数,并且 a2 是一个可编辑字段。现在考虑两个最终用户正在访问 此应用程序同时尝试将数据插入表 A。这两个用户将看到字段 a1 的相同值 并在字段 a2 中给出不同的值。现在两个用户都提交了应用程序并将数据插入 A。这将 导致为字段 a1 插入具有相同值的两行。但是字段 a1 是主键。所以它应该有不同的价值。
在表 A 中插入数据时如何防止这种情况发生?这里需要应用线程概念吗?
【问题讨论】:
你可以让数据库自动生成主键。 像没有 jsf 一样解决它。让您的 jdbc 或 jpa 层帮助您。实际上所有 ypyr 标记都不是“主题”(java 太通用,wildfly 太具体(并且不相关) 【参考方案1】:使用 ID 生成器。可能有不同的类型,例如像Oracle一样基于数据库序列,在mysql中基于自动增量。
这里有一些很好的例子:
https://docs.jboss.org/hibernate/orm/5.0/mappingGuide/en-US/html/ch06.html Difference between @GeneratedValue and @GenericGenerator How to annotate MYSQL autoincrement field with JPA annotations【讨论】:
以上是关于插入表时如何避免数据不一致的主要内容,如果未能解决你的问题,请参考以下文章