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?
Aus der 10G PL / SQL-Dokumentation :
%Vor%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: