SET QUERY AND LOCK

4D - Documentation   Français   English   German   English   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next

Version 11


SET QUERY AND LOCK (Sperren)

ParameterTypBeschreibung
SperrenBooleanWahr = Durch Suchläufe gefundene
Datensätze sperren,
Falsch = Gefundene Datensätze nicht sperren

Beschreibung

Mit dem Befehl SET QUERY AND LOCK können Sie festlegen, dass die Datensätze gesperrt werden, die durch Suchläufe, ausgelöst durch Aufruf dieses Befehls in der aktuellen Transaktion, gefunden werden. Das bedeutet, dass die Datensätze zwischen der Suche und dem Bearbeiten des Suchergebnisses nur im aktuellen Prozess verändert werden können.

Standardmäßig sind die durch eine Suche gefundenen Datensätze nicht gesperrt. Übergeben Sie im Parameter Sperren Wahr, wird das Sperren aktiviert.

Dieser Befehl muss innerhalb einer Transaktion verwendet werden. Bei Aufruf außerhalb dieses Kontexts wird ein Fehler erzeugt. So lässt sich das Sperren von Datensätzen besser steuern.

Die gefundenen Datensätze bleiben gesperrt, bis die Transaktion durch Bestätigen oder Abbrechen beendet wird. Dann sind wieder alle Datensätze freigegeben.

Wurde SET QUERY AND LOCK(Wahr) ausgeführt, nehmen die Suchbefehle, wie z.B. QUERY eine spezifische Funktionsweise an, wenn beim Suchen Datensätze gefunden werden, die bereits gesperrt sind:

- Die Systemvariable OK wird auf 0 (Null) gesetzt,

- Die aktuelle Auswahl wird aufgehoben

- Die Systemmenge LockedSet wird aktualisiert: Sie enthält die beim Suchen gefundenen gesperrten Datensätze.

Folglich müssen Sie in diesem Zusammenhang bei einer ergebnislosen Suche (aktuelle Auswahl leer bzw. Variable OK auf 0 gesetzt) die Menge LockedSet testen, um den Grund für die fehlgeschlagene Suche herauszufinden.

Die Datensätze werden für alle Tabellen in der aktuellen Transaktion gesperrt. Rufen Sie SET QUERY AND LOCK(Falsch) auf, um diese Operation anschließend wieder aufzuheben.

Beispiel

In diesem Beispiel lässt sich zwischen den Befehlen QUERY und DELETE SELECTION ein Kunde, der von Kategorie C in Kategorie A übertragen wird, nicht verändern.

   START TRANSACTION
   SET QUERY AND LOCK(True)
   QUERY([Customers];[Customers]Category="C")
      `In diesem Moment werden die gefundenen Datensätze automatisch für alle anderen Prozesse gesperrt.
   DELETE SELECTION([Customers])
   SET QUERY AND LOCK(False)
   VALIDATE TRANSACTION 

Fehler verwalten

Wird der Befehl außerhalb einer Transaktion aufgerufen, wird ein Fehler generiert.

Referenz

QUERY.


4D - Documentation   Français   English   German   English   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next