我想编写一个存储的Proc,它需要执行以下步骤
我想这样做,因为这个SP将从我的java程序中每5分钟调用一次,而且我不想选择我已经从SP返回的行,这就是为什么我需要标记它们被处理。
发布于 2014-07-24 03:34:39
像这样吗?
检索您感兴趣的行。使用holdlock关键字可以确保没有什么可以在select和update之间插入额外的行。锁一直保持到事务结束为止。
存储过程使用共享锁执行检索,然后用update语句将其升级为独占。
当事务提交时,锁被释放。
create proc update_status as
begin transaction
select *
from
t1 holdlock
where
flag = 'Y'
and status != 'PROCESSED'
update t1 set
status = 'PROCESSED'
where
flag = 'Y'
and status != 'PROCESSED'
commit
gohttps://stackoverflow.com/questions/24635733
复制相似问题