Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

***********

Geschrieben

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.

Geschrieben

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

Geschrieben

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.

Geschrieben

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

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 erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

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