4D v16.3

SET QUERY AND LOCK

Home

 
4D v16.3
SET QUERY AND LOCK

SET QUERY AND LOCK 


 

SET QUERY AND LOCK ( Sperren ) 
Parameter Typ   Beschreibung
Sperren  Boolean in Wahr = Durch Suchläufe gefundene Datensätze sperren
Falsch = Gefundene Datensätze nicht sperren

Der Befehl SET QUERY AND LOCK sperrt die Datensätze, die durch Suchläufe, ausgelöst durch Aufrufen 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, führen die Suchbefehle, wie z.B. QUERY spezifische Operationen aus, wenn beim Suchen Datensätze gefunden werden, die bereits gesperrt sind:

  • Die Suche wird gestoppt und die Systemvariable OK wird auf 0 (Null) gesetzt,
  • Die aktuelle Auswahl wird aufgehoben
  • Die Systemmenge LockedSet 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.

SET QUERY AND LOCK verändert nur das Verhalten von Suchbefehlen, also für:

Er hat keine Auswirkung auf andere Befehle, welche die aktuelle Auswahl wie ALL RECORDS, RELATE MANY, etc.

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

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



Siehe auch 

QUERY

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Suchen
Nummer: 661

Dieser Befehl ändert die Systemmenge LockedSetDieser Befehl ändert die Systemvariable ErrorThis command can be run in preemptive processes

 
GESCHICHTE 

Erstellt: 4D v11 SQL

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v16)
4D Programmiersprache ( 4D v16.1)
4D Programmiersprache ( 4D v16.2)
4D Programmiersprache ( 4D v16.3)