Jim_Hawkins Geschrieben 2. März 2009 Teilen 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 *********** Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schmarrer Geschrieben 2. März 2009 Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jim_Hawkins Geschrieben 3. März 2009 Autor Teilen 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... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Schmarrer Geschrieben 3. März 2009 Teilen 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jim_Hawkins Geschrieben 3. März 2009 Autor Teilen 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.