SQL Practice Blog – SQL Server, BizTalk und .NET Erfahrungen

HowTo: Einsatz von Triggern

with one comment

Hier ist wieder mal ein kleines HowTo. Diesmal wird es sich um Trigger und deren Einsatzmöglichkeiten handeln. Viele haben den Begriff Trigger schon einmal gehört, wissen jedoch nicht wie man sie einsetzt
oder entwickelt, deshalb hab ich dieses HowTo geschrieben.

Was sind Trigger?

Ein Trigger ist ein Datenbankobjekt, welches z.B. auf einer Tabelle oder einer Datenbank liegen kann und auf
Ereignisse reagiert. Es wird nach drei Arten von Triggern unterschieden:

DML Trigger
Kommen bei INSERT, UPDATE oder DELETE auf eine Tabelle oder Sicht zu Einsatz

DDL-Trigger
Reagieren auf Data Definition Language Events (CREATE, ALTER, DROP)

LOGON-Trigger
Reagieren auf LOGON Events

Ich möchte heute jedoch nur auf die DML Trigger eingehen und dessen Einsatz an einem ganze praktischen
Beispiel einmal zeigen.

Beispiel:

Gegeben ist folgende Tabelle:

image

Es handelt sich zugegeben um eine sehr einfache Tabelle, jedoch lässt sich damit der Umgang mit Triggern sehr gut erläutern.
In der Tabelle werden die Prüfdaten für ein Gerät gespeichert, d.h. wann ein Gerät zuletzt geprüft wurde und in
welchen Intervall (Monate) es wieder geprüft werden muss.

Hierbei kommt der Trigger zum Einsatz, welcher berechnen soll wann die nächste Prüfung des Geräts ansteht. Dazu muss ich einen Trigger in der Tabelle DeviceCheck einsetzen welcher auf INSERT und UPDATE Anweisungen reagiert.

Syntax für einen DML-Trigger:

image

In unserem speziellen Fall würde der Trigger wie folgt aussehen:

image

Dieser Trigger wird ausgeführt wenn ein INSERT oder UPDATE Befehl auf die Tabelle DeviceCheck abgefeuert wird. Dabei wird der Intervall mit dem letzten Prüfungsdatum addiert und der Datensatz in der Datenbank aktualisiert.

Fazit

Ein Trigger ist oftmals ein guter Helfer, jedoch sollte man sich im Klaren sein wohin man die Logik packen möchte. Kommt die Logik ausschließlich in die Businesslogik des Projekts (z.B. .NET Applikation) oder ist es erlaubt Logik auch in Datenbankobjekte auszulagern? Was meint ihr? Außerdem sollte man drauf achten das man in Triggern keinen komplizierten Berechnungen ausführt, da sowas die Performance der Datenbank erheblich beeinträchtigen kann.

Written by Robert Meyer

März 10, 2010 um 17:58

Veröffentlicht in SQL Server

Tagged with , , , , ,

Eine Antwort

Subscribe to comments with RSS.

  1. Netter Artikel. Trigger sind ziemlich Mächtig und genauso verführerisch🙂

    Ich habe bis jetzt nur in einem Projekt Trigger verwendet. Da ging es darum vorberechnete Ergebnisse als „veraltet“ zu markieren, wenn sich ein Parameter ändert der für die Berechnung verwendet wird.

    Da war es vielleicht sinnvoll, weil zuviele Faktoren von unterschiedlichen stellen eine Rolle spielten. Ob ich es heute wieder so machen würde? Bezeifle ich stark…

    Lieber vorher gut planen und sich Trigger sparen.

    Dennis Bischof

    März 10, 2010 at 18:19


Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: