Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie kann ich eine einzelne Zeile in Oracle SQL sperren

Sie können den Datensatz wie in anderen Antworten beschrieben sperren, aber Sie werden keine Ausnahme sehen beim UPDATE dieser Zeile.

Das UPDATE -Anweisung wartet, bis die Sperre aufgehoben wird , also die Sitzung mit SELECT ... FOR UPDATE begeht. Danach wird das UPDATE durchgeführt.

Die einzige Ausnahme, die Sie verwalten können, ist DEADLOCK, d. h.

Session1   SELECT FOR UPDATE record A
Session2   SELECT FOR UPDATE record B
Session1   UPDATE record B  --- wait as record locked
Session2   UPDATE record A  --- deadlock as 1 is waiting on 2 and 2 waiting on 1