我将通过一个例子来说明我的情况。
我的表中有多行。我一个接一个地挑选。我需要锁定该行以进行处理。
示例代码如下
select top 1 * into #open_order from orders with (xlock)
where status = 'open' order by order_time;
编辑:在查询中添加了order by子句。
我的要求是在并行连接中运行它。我的问题是,我无法在多个连接上并行运行此代码。第二个等待直到第一个提交事务。
是否可以从此选择查询中排除已经锁定的行?
我遇到了with(readpast)
。但是我不知道它是否可以一起使用。
编辑:样本数据和期望值。
订单表数据:
id, order_time, status, remark
1, 2019-01-01 00:00:01, 'open', 'Sample 1'
2, 2019-01-02 00:00:01, 'open', 'Sample 2'
3, 2019-01-03 00:00:01, 'open', 'Sample 1'
如果第一行被锁定,我希望得到第二行作为查询结果。