我将用一个例子来解释我的场景。
我的表中有多行。我正在一一挑选进行处理。我需要锁定行进行处理。
示例代码看起来像,
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'
如果第一行被锁定,我期望得到第二行作为查询的结果。