--用锁的方式测试到无法解决并发的一些状态update的问题,网上找到如下解决方式:
为了使几个JOB可以同时处理数据,同时用一个简单的方法处理,可以用output 语句,得到批理更新状态时的更新了状态的数据的ID值:
例子如下:
-
- begin
-
- DECLARE @TMP TABLE(ID INT)
- UPDATE TOP(1) dbo.fl18_ScaleOutTest
- SET Status = 'P',
- BeginProcessDate = GETDATE()
- OUTPUT DELETED.ID
- INTO @TMP
- WHERE Status = 'O'
- SELECT ID FROM @TMP;
-
- commit tran