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 )
你的有可能对,但太麻烦
还有一种方法,是事务的隔离等级,是序列的
@剑飘红: 这是从微软的 Membership 中抄出来的。每种同步方法的范围和开销都不一样,你应该根据自己的需求来选择。即使在 C# 中,根据不同的需求,我们也不是只有 lock 可用,或 lock 是最佳之选。相对来说,lock 是最简单和最容易理解的同步方式。
sql应该叫事务吧。
sql中也是有锁 的 表锁 行锁 都有 百度就知道了