Database event

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

Version 11.2 (Geändert)


Database event

ParameterTypBeschreibung
Dieser Befehl benötigt keine Parameter
FunktionsergebnisNumerisch0Außerhalb jeder Ausführungphase
eines Triggers
1Neuen Datensatz sichern
2Vorhandenen Datensatz sichern
3Datensatz löschen

Beschreibung

Rufen Sie in einem Trigger die Funktion Database 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 stehen zur Verfügung:

KonstanteTypWert
On Saving New Record EventLange Ganzzahl1
On Saving Existing Record EventLange Ganzzahl2
On Deleting Record EventLange Ganzzahl3

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.

Beispiel

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

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


Referenz

Einführung in Trigger, In transaction, Trigger level, TRIGGER PROPERTIES.


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