首页 新闻 搜索 专区 学院

sql server中有没类似C#中的lock(this)

0
悬赏园豆:15 [待解决问题]

在C#中我们让一串代码在并发时也单个执行,可以这么写

lock(this)

{

  语句1;

  语句2;

}

在sql server中有没类似下面的写法:

lock(this)

{

  select a from tableA

  select b from tableB

}

剑飘红的主页 剑飘红 | 初学一级 | 园豆:169
提问于:2014-06-27 16:17
< >
分享
所有回答(3)
0

DECLARE @TranStarted   bit
SET @TranStarted = 0

 

IF( @@TRANCOUNT = 0 )
BEGIN
     BEGIN TRANSACTION
     SET @TranStarted = 1
END
ELSE
     SET @TranStarted = 0

 

// do something

 

IF( @TranStarted = 1 )
BEGIN
   SET @TranStarted = 0
   COMMIT TRANSACTION
END

 

//----------------------------------------------------

SELECT xxx FROM xxx WITH( XXX_LOCK )

Launcher | 园豆:45045 (高人七级) | 2014-06-27 16:44

你的有可能对,但太麻烦

还有一种方法,是事务的隔离等级,是序列的

支持(0) 反对(0) 剑飘红 | 园豆:169 (初学一级) | 2014-06-28 22:46

@剑飘红: 这是从微软的 Membership 中抄出来的。每种同步方法的范围和开销都不一样,你应该根据自己的需求来选择。即使在 C# 中,根据不同的需求,我们也不是只有 lock 可用,或 lock 是最佳之选。相对来说,lock 是最简单和最容易理解的同步方式。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2014-06-30 08:48
0

sql应该叫事务吧。

angelshelter | 园豆:9676 (大侠五级) | 2014-06-27 17:41
0

sql中也是有锁 的  表锁 行锁 都有 百度就知道了

Zery | 园豆:6069 (大侠五级) | 2014-06-27 22:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册