SQL Server 并发死锁解决案例备忘
2024-10-16 11:47:29
SET @sql = '
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
SET DEADLOCK_PRIORITY 10
BEGIN TRAN
DECLARE @QuestionList TABLE(ID BIGINT,StudentCode NVARCHAR(50)) INSERT INTO @QuestionList(ID,StudentCode)
SELECT TOP '+CAST((@QuestionCount*@MinorQuestionCount) AS NVARCHAR(10))+' SS.ID,SS.StudentCode
FROM ['+@CourseID+'_SubjectiveScoreInfo] AS SS WITH(UPDLOCK,READPAST)
INNER JOIN SubjectiveItemInfo AS SI
ON SS.TestCode=SI.TestCode
AND SS.MajorQuestionID=SI.MajorQuestionID
AND SS.MinorQuestionID=SI.MinorQuestionID
WHERE SS.TestCode=''' + @TestCode + '''
AND SS.MarkingStatusID = 1
AND SI.QuestionGroupCode=''' + @QuestionGroupCode + '''
AND (SI.MinorQuestionCount=0
OR SI.MinorQuestionID>0)
AND SS.MarkingStepID < 3
AND (HandledID1 IS NULL OR HandledID1 <> '''+ @HandledID +''')
AND (HandledID2 IS NULL OR HandledID2 <> '''+ @HandledID +''')
AND NOT EXISTS
(
SELECT TOP 1 1
FROM ['+@CourseID+'_SubjectiveScoreInfoFlag] WITH(NOLOCK)
WHERE AR = 0 AND ID = SS.ID
GROUP BY ID
HAVING ((SS.MarkingStepID <2 AND COUNT(*) >= 2) OR (SS.MarkingStepID = 2 AND COUNT(*) >= 3))
)
ORDER BY SS.StudentCode,SS.MajorQuestionID INSERT INTO #TStudentCode(StudentCode,TaskHandledID,HandleStepId)
SELECT DISTINCT TOP '+CAST(@QuestionCount AS NVARCHAR(10))+' StudentCode, null ,0
FROM @QuestionList INSERT INTO ['+@CourseID+'_SubjectiveScoreInfoFlag](AR,ID)
SELECT 0,ID
FROM @QuestionList COMMIT TRAN
'
PRINT @sql
EXEC sp_executesql @sql
最新文章
- IMEI串号
- BZOJ2457 BeiJing2011 双端队列
- 勿在浮沙筑高台-- 关于IT技术学习的一点反思
- 关于表 datatable的条件查询
- 关于为什么java需要垃圾回收
- Android客户端token简介和简单应用
- 彻底解决android读取中文txt的乱码(自动判断文档类型并转码
- 找不好重现的bug的一个小技巧————守株待兔
- 转:使用 Docker 搭建 Java Web 运行环境
- java.sql.SQLException: ORA-00911: 无效字符 解决方案
- BZOJ 3612: [Heoi2014]平衡( dp )
- java中修饰符及其用法
- 关于iOS后台模式
- 度分秒转换十进制度 之Excel实现
- linux服务器安装pyspide关于rgnutls.h: No such file or directory 的解决方案
- [20190130]删除tab$记录的恢复2.txt
- 在docker hub,用github的dockerfile自动生成docker镜像
- DEBUG模式详解
- [Android] ACTION_GET_CONTENT与ACTION_PICK的区别
- 【Linux】SecureCRT连接Linux乱码