如果我从应用程序中的多个线程调用以下代码,是否存在死锁风险?用于连接数据库的事务在此调用之前打开,一旦返回就关闭。 应用程序:java 数据库:Oracle使用Rownum时数据库死锁?
FUNCTION reserveWork(in_batch_id NUMBER,
in_work_size NUMBER,
in_contentType_id NUMBER) RETURN NUMBER IS
rows_reserved NUMBER := 0;
BEGIN
UPDATE
D_Q1
SET
DQ1_BAT_ID = in_batch_id
WHERE
DQ1_BAT_ID is null
AND DCT_ID = in_contentType_id
AND ROWNUM < (in_work_size + 1);
rows_reserved := SQL%ROWCOUNT;
RETURN (rows_reserved);
END;
哇,我读过汤姆凯特的答案在下面的加里的答案中引用。很酷!这意味着如果事务阻止它将被重新启动,所以它不应该死锁。 – 2009-02-04 23:44:24