首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JDBC:多个请求时的安全行更新

问JDBC:多个请求时的安全行更新
EN

Stack Overflow用户
提问于 2017-04-06 12:30:30
回答 1查看 103关注 0票数 0

我有一个Java,它使用RESTful和ComboPooledDataSource进行连接池(http://www.mchange.com/projects/c3p0/),还有一个PreparedStatement,它通过递增一个字段来更新行:

代码语言:javascript
复制
public void update(int messageId) {

    String UPDATE_STM = "UPDATE table SET count_field = count_field +1 WHERE id=?";
    conn = ConnectionManager.getConnection();
    PreparedStatement stm = conn.prepareStatement(UPDATE_STM );
    stm.setInt(1, messageId);
    stm.executeUpdate();
}

(我省略了try/catch,ConnectionManager.getConnection()为我提供了池中的一个可用连接)。如果我的RESTful服务同时接收到两个或多个有关update()方法的请求,是否允许正确更新计数?如果不是,我应该如何修改代码以避免错误的计数更新?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-06 13:24:50

使用InnoDB

据我所见,您的Java代码是线程安全的,它不访问或更改任何字段。您要担心的就是数据库端的UPDATE操作。我想您使用的是MySQL,因为您已经用mysql标记了问题。MySql数据库管理系统提供ACID模型,您需要将数据库引擎设置为InnoDB才能工作。有关更多细节,请参见此链接。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43255306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档