DevTrain Startseite Visual Studio 1 Magazin  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Andreas Rauch Artikel Drucken
        
SQL Trigger eine besondere procedure

In SQL gibt es hervorragende Features, den Entwicklern Arbeit abzunehmen. Eines davon ist der Trigger. Dessen Aufgabe besteht hauptsächlich darin, bei bestimmten Ereignissen bestimmte Aufgaben automatisch auszuführen. Solche Ereignisse können Update, delete oder Insert Anweisungen sein.

Was genau macht denn nun der Trigger? Und welche Arbeit kann er abnehmen? Er entspricht eigentlich einer stored procedure. Nur daß dieser Trigger auf oben genannte Ereignisse reagiert.

Wie machen wir nun diesen Trigger?


Ein Trigger wird auf die gleiche Art wie eine Tabelle oder View gebildet:

CREATE TRIGGER trigger_name
ON { table | view }
{
    { { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] }
        [WITH APPEND]
        [NOT FOR REPLICATION]
        AS
        [ { IF UPDATE ( column )
            [ { AND | OR } UPDATE ( column ) ]
                [ ...n ]
        | IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
                { comparison_operator } column_bitmask [ ...n ]
        } ]
        sql_statement [ ...n ]
    }
}

 

Wie Sie sehen, haben Sie die Möglichkeit den Einsatzzeitpunktes  des Triggers zu steuern

For ist der Standard Fall. Der Trigger reagiert sofort auf das einleitende Ereignis.


After gibt an, daß der Trigger erst nach der Operation gestartet wird.

Instead of gibt an, daß anstatt der Update oder Insert Anweisung, die den Trigger auslöst, nur der Trigger gestartet wird.     

Wo viel Licht, da auch Schatten. Seien Sie vorsichtig beim Einsatz eines Triggers. Ein kleiner Fehler bei einem Update kann ihr gesamte Tabelle vernichten. Außerdem ist eine Trigger immer nur auf eine Tabelle beschränkt.

Dagegen können Sie den Trigger gleichzeitig auf update, insert oder delete reagieren lassen. Für solch komplexere Trigger arbeitet man am besten  mit Bedingungen.


Machen wir mal ein kleines Beispiel: Wir haben eine Kundentabelle (Kunden) und eine Tabelle Emailverteiler. Wir versenden wöchentlich Betriebliche Kennzahlen und wollen, daß diese nur bestimmte Personen (VIP) bekommen. Sobald in einer Erfassungsmaske bei einer Person der Status VIP eingetragen wird, löst der Trigger ein Ereignis aus, das auf dem Emailverteiler in die Spalte Mail eine '1' setzt.

USE Adressdb
go
Create Trigger email_insert
 on Kunden
 for insert
as
 update  e SET mail = '1'
 from emailverteiler e Inner join Kunden k
 on e.Email_ID = K.Email_ID and k.vip = '1'


Die Möglichkeiten der Trigger sind sehr groß:  Rekursive (Indirekte oder direkte Rekursion) sowie Verschachtelte Trigger sind möglich.


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente
    Keine Links vorhanden

  Erfasst am: 05.02.2001
  Gültig bis: 13.07.2001
103 Ratings
Bewertung: 50,7%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG