Zum Inhalt springen

Trigger auf MSSQL 2005 wenn Spalte enthält Wert


Jim_Hawkins

Empfohlene Beiträge

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

***********

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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...:(

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...