首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有原子update sql查询的Mysql多连接[竞争条件]

具有原子update sql查询的Mysql多连接[竞争条件]
EN

Stack Overflow用户
提问于 2021-11-11 07:02:03
回答 1查看 34关注 0票数 0

我目前正在nodejs的一个项目中工作,该项目有一个到Mysql DB的池连接(同时打开了大约10个连接)。现在,我希望能够使用连接来更新数据库中的表,如下所示:

代码语言:javascript
复制
update table set tries=tries+1 where condition=value;

我的问题是,在这种方法的所有连接之间,不可能出现竞争条件?因为我在互联网上查找,发现我的SQL中的“事务”将导致多个数据库连接之间的竞争条件。

谢谢

EN

回答 1

Stack Overflow用户

发布于 2021-11-11 07:52:33

将事务的隔离级别设置为可序列化。在更新的情况下,使用乐观锁定。用StoredProcedure编写这些代码。

代码语言:javascript
复制
DECLARE V_ERR_OCCURED   BOOLEAN;
DECLARE V_ERR_MESSAGE   VARCHAR(500);

SET V_ERR_OCCURED=FALSE;
SET V_ERR_MESSAGE=SPACE(0);

SET V_ERR_MESSAGE='Transaction Error';

BEGIN

DECLARE EXIT HANDLER FOR SQLEXCEPTION
SET V_ERR_OCCURED=TRUE;

SET AUTOCOMMIT=0;

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
START TRANSACTION;

# Your Update Statements

IF V_ERR_OCCURED=TRUE THEN
    ROLLBACK;
ELSE
    COMMIT;
END IF;

SET AUTOCOMMIT=1;

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

https://stackoverflow.com/questions/69924336

复制
相关文章

相似问题

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