Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
SET QUERY AND LOCK
|
SET QUERY AND LOCK ( Sperren ) | ||||||||
Parameter | Typ | Beschreibung | ||||||
Sperren | Boolean |
![]() |
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:
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.
Produkt: 4D
Thema: Suchen
Nummer:
661
Erstellt: 4D v11 SQL
4D Programmiersprache ( 4D v20 R7)