2个线程怎么同时调用一个存储过程-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

2个线程怎么同时调用一个存储过程

蛮大人123 2016-02-20 10:39:48 2360

要求是这样的:
1.在数据库中新建一个用户状态表。里面包含2个字段。user_status(userid bigint,status int)
userid为自增。
status默认为0;
插入1000条记录。
2.写一个存储过程,从user_status表中获取一条status=0的userid字段的值,取出userid时,需要同时把这条记录对应的status从0修改为1.
3.开启2个线程,在线程中循环调用第2步中的存储过程,直到user_status表中记录全部取完(即status全部为1)。要求:在2个线程中取出的userid不能重复。并把取出的userid,打印到某个文件中,一行一个userid
第一点,没啥问题吧应该,我在数据库里建好了。
第二点的话,我写的存储过程是:
screenshot
第三点的代码:
screenshot
screenshot
可是到最后,我不能在txt里得到1000条数据,总是缺少一些条目,但是数据库里却更新了……
如果我把存储过程改为
screenshot
这样运行又会报死锁错误
好吧,多线程的问题和存储过程不怎么会啊,求指教啊!

存储 数据库
分享到
取消 提交回答
全部回答(1)
  • 蛮大人123
    2019-07-17 18:45:09

    一:在表中新增一个job字段,这个job取序列号;
    二:每次执行存储过程时先获取一个序列,并且写在要操作数据的那个表中;
    三:做完步骤二的更新后用这个job查询出这个序列的数据进行业务;
    四:做完业务后,将job的数据更新为空.
    另外有个重置的行程,更新job在处理时有挂死或者超时的情况,比如你的job不为空,但是status一直还是0.过了一个小时还是这样,就必须重置了
    这样每个job处理的数据全都是自己的数据.希望给你帮助。

    0 0
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

推荐文章
相似问题
推荐课程