选择行并更新相同的行以进行锁定?

选择行并更新相同的行以进行锁定?,第1张

选择行并更新相同的行以进行锁定

使用OUTPUT投票表决Cade Roux的答案:

UPDATe #tbl   SET locked = 1OUTPUT INSERTED.* WHERe id IN (SELECT TOP 1 id     FROM #tbl    WHERe locked = 0 ORDER BY id)鈥�
之前:

这是我可以想到的使用临时表的少数情况之一:

ALTER PROCEDURE temp_table_testASBEGIN   SELECt TOP 5000 *      INTO #temp_test     FROM your_table    WHERe locked != 1 ORDER BY ?   UPDATe your_table      SET locked = 1    WHERe id IN (SELECT id FROM #temp_test)   SELECt *     FROM #temp_test   IF EXISTS (SELECt NULL     FROM tempdb.dbo.sysobjects    WHERe ID = OBJECT_ID(N'tempdb..#temp_test'))   BEGIN     DROP TABLE #temp_test   ENDEND

这:

  1. 获取所需的行,将其填充到本地临时表中
  2. 使用临时表更新要“锁定”的行
  3. 临时表中的SELECT可以为您提供结果集输出
  4. 删除临时表,因为它们用于该会话


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5620415.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存