Jim_Hawkins Geschrieben 2. März 2009 Geschrieben 2. März 2009 Hintergrund: MSSQL Server 2005 - Standard Edition Ich hab eine Tabelle mit 5 Spalten. In der Spalte 5 stehen nur die Werte 0 oder 2. Ich brauch jetzt einen Trigger der im Falle eines INSERTS eines Datensatzes prüft, welcher Wert in Spalte 5 steht. Je nachdem, ob 0 oder 2, sollen unterschiedliche UPDATES auf einer anderen Tabelle durchgeführt werden. Ich habe leider kaum Erfahrung mit Triggern und kenne kaum mehr als die Grundstruktur. Mit Hilfe von Google bin ich zum folgendenden SQL-Script bekommen, allerdings wirft mir dies eine Exception "Meldung 156, Ebene 15, Status 1, Prozedur treffer, Zeile 9 Falsche Syntax in der Nähe des 'WHEN'-Schlüsselwortes." ********** Beispiel: CREATE TRIGGER treffer ON MyTable AFTER INSERT WHEN MyTable.Spalte5=2 BEGIN UPDATE DieseTabelle SET DieseTabelle.Flag = 'y' WHERE DieseTabelle.ID = MyTable.ID; END GO ***********
Schmarrer Geschrieben 2. März 2009 Geschrieben 2. März 2009 Hi, ich bin mir jetzt zwar nicht ganz sicher wie das bei Triggern ist, aber probier mal...: ********** Beispiel: CREATE TRIGGER treffer ON MyTable AFTER INSERT CASE WHEN MyTable.Spalte5=2 then BEGIN UPDATE DieseTabelle SET DieseTabelle.Flag = 'y' WHERE DieseTabelle.ID = MyTable.ID; END END GO *********** Wie gesagt, ist auf die Schnelle und ohne Gewähr Für Verzweigungen innhalb von SQL Statements brauchst du immer ein CASE WHEN .... THEN .... (ELSE) ... END. Vielleicht hilfts.
Jim_Hawkins Geschrieben 3. März 2009 Autor Geschrieben 3. März 2009 Hab mein Script jetzt mit CASE umgebaut. Leider bekomme ich aber immer noch die gleiche Fehlermeldung: Meldung 156, Ebene 15, Status 1, Prozedur treffer, Zeile 9 Falsche Syntax in der Nähe des 'CASE'-Schlüsselwortes. Kennst du eine Website oder eine Art Tutorial für Trigger? Google hat mir bis jetzt noch nicht weitergeholfen...
Schmarrer Geschrieben 3. März 2009 Geschrieben 3. März 2009 Hi, also spontan fällt mir da auch nur das MSDN ein. Weiß aber nicht ob das in dem Fall hilft! Wie gesagt, ob sowas überhaupt so funktioniert, weiß ich nicht. Müsste ich selbst erst einmal nachlesen.
Jim_Hawkins Geschrieben 3. März 2009 Autor Geschrieben 3. März 2009 Danke für die Hilfe. Mit ein bisschen lesen im MSDN hab ich jetzt was ich wollte. Sollte jemand das gleiche Problem haben, mein SQL Script für die Erstellung des Triggers: ALTER TRIGGER trig ON testtbl AFTER INSERT AS DECLARE @match tinyint, @match_ref varchar(32) SELECT @match=spalte1, @match_ref=spalte2 FROM testtbl; IF (@match = 2) UPDATE [datenbank].[schema].[tabelle] SET flag1 = true WHERE ID = @match_ref ELSE UPDATE [datenbank].[schema].[tabelle] SET flag1 = false WHERE ID = @match_ref
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden