Oracle sperrt mit SELECT ... FOR UPDATE OF

8

Ich wähle aus den Tabellen FOO und BAR. Ich möchte die Aufzeichnungen von FOO, die zurückgegeben werden, sperren, aber ich möchte nicht, dass die Datensätze von BAR gesperrt werden.

%Vor%

Es scheint so, als müsste ich einzelne Spalten angeben, aber ich möchte, dass der gesamte Datensatz von foo gesperrt wird. z.B. Ich wünschte, ich könnte etwas tun wie:

%Vor%

Muss ich jede Spalte von foo im Abschnitt for update of aufzählen, um alle zu sperren? Oder kann ich willkürlich irgendeine Spalte in foo wählen, sogar diejenigen, die nicht ihr Primärschlüssel sind, und es wird den gesamten Datensatz sperren?

    
aw crud 18.06.2010, 14:22
quelle

1 Antwort

12

Aus der 10G PL / SQL-Dokumentation :

  

Wenn Sie mehrere Tabellen abfragen, können Sie   Verwenden Sie die FOR UPDATE-Klausel, um zu beschränken   Zeilensperren für bestimmte Tabellen. Reihen   in einer Tabelle sind nur gesperrt, wenn die FOR   UPDATE OF-Klausel bezieht sich auf eine Spalte   in dieser Tabelle. Zum Beispiel, die   Folgende Abfrage sperrt Zeilen in der   Mitarbeiter Tabelle, aber nicht in der   Abteilungstabelle:

%Vor%     
Tony Andrews 18.06.2010, 14:34
quelle

Tags und Links