我想编写一个查询,它只更新表的一行,然后返回更新的行。
我可以使用获得返回的行
select field from final table
(update tablename set anotherfield = 'dd' where someanotherfield = 'bb')
种说法。但我不能只更新一行。
另外,我调用此查询的程序是一个多线程程序,我不想让任何进程死锁,所以我发现 SKIP LOCKED DATA 语句类似于 t-sql 查询中的 readpast。
所以我想做的是,我的程序使用一个像堆栈一样的 db2 表,每次只选择一行,更新它,这样任何其他线程都无法访问它,但不会让他们等待整个表,他们只是跳过更新的行和从表中选择下一条记录。在单个 db2 查询中是否可以执行此操作?
到目前为止我已经写了这个查询,它无法处理
select COLUMN3 FROM FINAL TABLE
(
update MYTABLE
set COLUMN1 = 'R'
where COLUMN1 = ''
order by COLUMN2
FETCH FIRST 1 ROW ONLY
SKIP LOCKED DATA
)
任何帮助将不胜感激,谢谢。