最近有一个朋友问我一个关于给查询操作强制上X锁却不阻塞的问题。该查询写在一个存储过程中,代码如代码1所示:
PROC [dbo].[GetCityOrders]
2: @city NVARCHAR(10) ,
INT
AS
ON
6:
BEGIN TRY
8:
TRAN
10:
TOP ( @num )
12: id ,
13: number ,
14: price ,
15: mid ,
16: @city city
INTO #cityorders
WITH ( XLOCK )
WHERE prov = 0
AND status = 0
AND city = @city
22:
UPDATE cmcc
SET status = 100
SELECT id
FROM #cityorders )
27:
SELECT o.* ,
29: c.attach
FROM #cityorders o
ON o.id = c.id
32:
TABLE #cityorders
34:
TRAN
36:
END TRY
BEGIN CATCH
39:
ROLLBACK
41:
END CATCH