4D v16.3

Trigger event

Home

 
4D v16.3
Trigger event

Trigger event 


 

Trigger event -> Funktionsergebnis 
Parameter Typ   Beschreibung
Funktionsergebnis  Lange Ganzzahl in 0=Außerhalb jeder Ausführungsphase eines Triggers, 1=Neuen Datensatz sichern, 2=Vorhandenen Datensatz sichern, 3=Datensatz löschen

Rufen Sie in einem Trigger die Funktion Trigger event auf, gibt sie eine Zahl zurück, die den Typ des Datenbankereignisses spezifiziert. d.h. Sie erfahren, weshalb der Trigger ausgelöst wurde.

Folgende vordefinierten Konstanten unter dem Thema Trigger Ereignisse stehen zur Verfügung:

Konstante Typ Wert
On Deleting Record Event Lange Ganzzahl 3
On Saving Existing Record Event Lange Ganzzahl 2
On Saving New Record Event Lange Ganzzahl 1

Führen Sie in einem Trigger Datenbankoperationen auf mehrere Datensätze aus, können Sie Umstände vorfinden – normalerweise gesperrte Datensätze – die die korrekte Ausführung des Triggers verhindern.
Beispiel: In einer Tabelle [Produkte] werden mehrere Datensätze aktualisiert, während in der Tabelle [Rechnungen] ein Datensatz hinzugefügt wird. An dieser Stelle müssen Sie die Datenbankoperation abbrechen und einen Fehler der Datenbank zurückgeben, so dass der auslösende Prozess weiß, dass diese Operation nicht durchführbar ist. Der auslösende Prozess muss in der Lage sein, die Datenbankoperation, die vom Trigger während der Transaktion unvollständig durchgeführt wird, abzubrechen. In solch einem Fall müssen Sie – bevor Sie versuchen, irgendetwas auszuführen – im Trigger wissen, ob Sie in Transaktion sind. Das testen Sie mit der Funktion In transaction.

Beim Verschachteln von Triggeraufrufen, wird 4D nur durch den verfügbaren Speicherplatz beschränkt. Zum Optimieren der Triggerausführung schreiben Sie den Code Ihrer Trigger nicht nur in Bezug auf die Datenbankereignisse, sondern auch in Bezug auf die jeweilige Ebene bei verschachtelten Triggern.
Beispiel: Sie wollen bei einem Datenbankereignis On delete für die Tabelle [Rechnungen] die Aktualisierung des Feldes [Kunden] Gesamtumsatz ausschalten, wenn das Löschen des Datensatzes [Rechnungen] bedeutet, dass alle Rechnungen gelöscht werden, die mit einem Datensatz [Kunden] verknüpft sind. Dafür verwenden Sie Trigger level und TRIGGER PROPERTIES.

Mit der Funktion Trigger event strukturieren Sie Ihre Trigger wie folgt:

  // Trigger für [beliebigeTabelle]
 C_LONGINT($0)
 $0:=0 ` Die Datenbankanfrage wird angenommen
 Case of
    :(Trigger event=On Saving New Record Event)
  // Führt die Aktionen aus, um einen neuen Datensatz zu sichern
    :(Trigger event=On Saving Existing Record Event)
  // Führt die Aktionen aus, um einen bestehenden Datensatz zu sichern
    :(Trigger event=On Deleting Record Event)
  // Führt die Aktionen aus, um einen Datensatz zu löschen
 End case



Siehe auch 

Einführung in Trigger
In transaction
Trigger level
TRIGGER PROPERTIES

 
EIGENSCHAFTEN 

Produkt: 4D
Thema: Trigger
Nummer: 369

This command can be run in preemptive processes

 
GESCHICHTE 

Geändert: 4D v11 SQL Release 2
Umbenannt: 4D v13

 
ARTIKELVERWENDUNG

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