Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com

Home

 
4D v20 R7
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, außer der aktuelle Datensatz.

Die Datensätze sind für alle Tabellen in der aktuellen Transaktion gesperrt.

Wurde SET QUERY AND LOCK(Wahr) ausgeführt, führen die Suchbefehle, wie z.B. QUERY spezifische Operationen aus, wenn beim Suchen ein bereits gesperrter Datensatz gefunden wird:

  • Die Suche wird gestoppt und die Systemvariable OK wird auf 0 (Null) gesetzt,
  • Die aktuelle Auswahl wird aufgehoben
  • Die Systemmenge LockedSet enthält den gesperrten Datensatz, der Stoppen der Suche verursacht hat.

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 ändern, 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 ErrorDieser Befehl kann in preemptive Prozessen laufen

 
SEITENINHALT 
 
GESCHICHTE 

Erstellt: 4D v11 SQL

 
ARTIKELVERWENDUNG

4D Programmiersprache ( 4D v20 R7)