社区
基础和管理
帖子详情
有关多线程的问题!!!
Delphi_Li
2003-01-23 02:09:33
我有一个程序适用多线程处理数据库,但是遇到这样的问题,当一个线程没有更新完数据,而另一个线程又对同一条记录操作,经常出现数据错误的情况,如何能避免这样的情况发生???
例如:
Table_A
ID VALUE
-----------
01 100
第一个线程将VALUE值减去100,但还没有Commit,这时候第二个线程又对VALUE值减去100。正常应该是-100,但是由于第一个线程没有Commit,所以得到的数值为0,如何解决这个问题呢???
...全文
23
5
打赏
收藏
有关多线程的问题!!!
我有一个程序适用多线程处理数据库,但是遇到这样的问题,当一个线程没有更新完数据,而另一个线程又对同一条记录操作,经常出现数据错误的情况,如何能避免这样的情况发生??? 例如: Table_A ID VALUE ----------- 01 100 第一个线程将VALUE值减去100,但还没有Commit,这时候第二个线程又对VALUE值减去100。正常应该是-100,但是由于第一个线程没有Commit,所以得到的数值为0,如何解决这个问题呢???
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hy2000
2003-01-23
打赏
举报
回复
没错,如果你直接用Update Table_A set value=value-100 where id=0 就不会有问题了
Lastdrop
2003-01-23
打赏
举报
回复
估计对表的操作是先SELECT出来,然后经过程序处理再update的吧?这样才会出现数据有误的情况。
penitent
2003-01-23
打赏
举报
回复
楼主的理解是错了,第二个进程在第一个没有提交的时候看到的不是0,还是100,如果第一个进程没有提交,那么第二个进程想减的时候,会等第一个进程提交后才能操作,那么就是还是0-100=-100没有问题.
suxiao
2003-01-23
打赏
举报
回复
有道理,这就是oracle的好处呀!
jiezhi
2003-01-23
打赏
举报
回复
其实你不用去考虑这样的问题。
oracle自己有加锁解锁机制。
在你使用诸如delphi这样的工具开发的时候,写一些异常处理就行了。
多线程
程序设计的相关
问题
多线程
程序设计的相关
问题
,是学习线程的好帮手!
多线程
中的生产者与消费者
问题
有关
多线程
中生产者与消费者
问题
,本文档详细介绍了此类
问题
,并有详细的例子!!
JAVA
多线程
精讲下
本课程是《零基础学Java》系列课程中的"
多线程
"相关课程.授课形式延续了之前课程的授课风格。内容细腻、详尽,由浅入深!通过本门课程的学习你可以深刻理解Java
多线程
的原理及实现运行机制,深刻学习
多线程
的生命...
Java并发相关
对java并发有很好的描述,涉及到java
多线程
,如何解决同步
问题
等!
操作系统实验 生产者消费者
问题
1.通过编写程序实现进程(线程)同步和互斥,掌握有关进程(线程)同步和互斥的原理,以及解决进程...掌握Linux中
多线程
的并发执行机制,线程的同步与互斥。3.学习使用Linux 中的信号量工具,掌握相应的系统调用函数。
基础和管理
17,377
社区成员
95,128
社区内容
发帖
与我相关
我的任务
基础和管理
Oracle 基础和管理
复制链接
扫一扫
分享
社区描述
Oracle 基础和管理
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章