# # Oracle Performance Tuning Chapter 10 p. 197 # # SELECT...FOR UPDATE OF: Locking a Row Explicitly TRIGGER ON-LOCK # SELECT 'X' FROM EMP WHERE EMP_NO = 1234 FOR UPDATE OF EMP_NO; # SELECT X' FROM EMP_HISTORY WHERE EMP_NO = 1234 FOR UPDATE OF EMP_NO; # # Oracle Performance Tuning Chapter 10 p. 200 # # SELECT...FOR UPDATE OF: Locking a Row Explicitly # #Using Pseudo-code to Lock a Large Table DECLARE CURSOR C1 IS SELECT EMP_NO FROM EMP WHERE EMP_DEPT = 0020; CURSOR C2 IS SELECT ROWID FROM EMP WHERE EMP_NO = :XEMP_NO AND EMP_DEPT = 0020 FOR UPDATE OF . . .; BEGIN KOUNTER = 0; OPEN C1; BEGIN_LOOP; FETCH C1 INTO :XEMP_NO; OPEN C2; FETCH C2 INTO :XROWID; IF C2%FOUND THEN UPDATE EMP SET . . . = . . . WHERE ROWID = :XROWID KOUNTER = KOUNTER + 1; IF KOUNTER = 20 THEN COMMIT; KOUNTER = 0; END IF; END IF; END_LOOP; CLOSE C1; CLOSE C2; END;