首页 新闻 赞助 找找看

SQL并发问题

0
悬赏园豆:15 [已解决问题] 解决于 2015-12-21 15:08

请教大神,SQL SERVER中,如何做到在语句1执行的时候,让语句2等待。

--语句1:
begin tran   
if not exists(select 1 from UserInfo where id=14285 and activityPoint='1')
Begin
    waitfor delay '00:00:10'; --等待30秒   
    update UserInfo set activityPoint='2' where id=14285
end
commit tran   

--语句2:
update UserInfo set activityPoint='1' where id=14285
问题补充:

说明一下,这两个语句属于不同的sp

MAQNH的主页 MAQNH | 初学一级 | 园豆:184
提问于:2015-11-19 15:30
< >
分享
最佳答案
0

你没有锁的概念。

建立下“锁”的概念就好了

收获园豆:10
吴瑞祥 | 高人七级 |园豆:29449 | 2015-11-19 16:07

锁 我知道,但是不会用,今天试了下,死锁了,所以才来这里问问。

MAQNH | 园豆:184 (初学一级) | 2015-11-19 16:10

@麻雀怒吼: 不一定是死锁吧? 确定不是锁等待?profiler里能抓出死锁么

Double_K | 园豆:173 (初学一级) | 2015-12-02 18:21
其他回答(5)
0

新建一张表,语句1开始执行的时候,同事把表里的字段设置成1,执行完后设置成0.

语句2执行的时候,去表里看,是0的话执行,是1的话就等待。

Firen | 园豆:5385 (大侠五级) | 2015-11-19 16:00
0

 sql语句本身就是顺序执行的,只有语句1执行完了语句2才能执行,你的语句难道语句2会比语句1先执行?

xmj112288 | 园豆:126 (初学一级) | 2015-11-19 16:01
0

什么都不用做,sql就是按照预计顺序执行的

茂茂 | 园豆:2892 (老鸟四级) | 2015-11-19 17:31
0

http://www.cnblogs.com/yinchuan/p/4910980.html 你看看这个

收获园豆:5
三人之行,必有我师 | 园豆:291 (菜鸟二级) | 2015-11-21 14:57
0

可以将 两个sp放在一个session内执行,自然就按照顺序来执行了

悦光阴 | 园豆:2251 (老鸟四级) | 2015-11-23 10:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册