0

我将用一个例子来解释我的场景。

我的表中有多行。我正在一一挑选进行处理。我需要锁定行进行处理。

示例代码看起来像,

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'

如果第一行被锁定,我期望得到第二行作为查询的结果。

4

0 回答 0