我对以下程序中的更新锁有点混淆
CREATE OR REPLACE
PROCEDURE pro_cedure(
p_dept_id NUMBER )
IS
CURSOR mycursor
IS
SELECT deptno,comm,extra
FROM emp
WHERE comm IS NULL
AND extra IS NOT NULL
AND deptno = p_dept_id
FOR UPDATE OF comm;
BEGIN
FOR emp_rec IN mycursor
LOOP
UPDATE emp SET comm = extra
WHERE CURRENT OF mycursor;
INSERT INTO changed
(
deptno,
oldval,
newval,
seq_nextval
)
VALUES
(
emp_rec.deptno,
emp_rec.comm,
emp_rec.extra,
sequence_name.nextval
);
END LOOP;
END;
如果其他用户在我更新时尝试更新同一个表或同一行,是否会导致该程序锁定?
答案 0 :(得分:0)
如果你并行运行这个程序2次,那么第二次执行就不会执行select,直到第一次提交。 (当然如果你为comm子句的更新运行其他语句,它们将以相同的方式排队。)