SQL Server:并发读取不可重复的行

时间:2014-01-03 17:44:08

标签: sql sql-server multithreading

如何制作这样的场景:

我有Order对象的表。 DB中有很多订单。有一些机制,几乎没有线程可以从DB获得下一个订单(但需要锁定,同样的订单不会被执行几次)。

如何在SQL Server级别中使一个线程读取行(顺序),从DB中删除它并将其返回到执行它的C#写入机制,当其他线程可以看到该行被锁定时,它会跳过那一行并采取下一个?

订单具有执行优先级,聚集索引位于优先级列。

这些东西将在存储过程中执行。

1 个答案:

答案 0 :(得分:0)

我在表中添加了一个名为“locked_by_thread”的列,其中包含一个线程号,当没有线程将其锁定时,它将为null。你必须更经常地使用这个场景,但这就是我要做的。