Frank (no reg): Trigger SQL Server 2000

Beitrag lesen

Hi,

wenn mehrere Datensätze mit einem SQL Batch (in einer impliziten Transaktion) auf einer Tabelle mit Trigger geändert (insert/update/delete) werden, dann zündet der Trigger auch nur einmal.

Um dieses Verhalten zu umgehen, musst du den Trigger entsprechend schreiben, mit einem CURSOR versehen.

DECLARE @spalte1Var varchar(255) -- oder was auch immer du da für einen Datentyp hast
DECLARE insertCur CURSOR FAST_FORWARD
FOR SELECT [spalte1] FROM inserted
OPEN insertCur
FETCH NEXT FROM insertCur INTO @spalte1Var
WHILE @@FETCH_STATUS = 0 BEGIN
  UPDATE [v] SET [spalte2] = @spalte1Var
  WHERE ....

FETCH NEXT FROM insertCur INTO @spalte1Var
END

CLOSE insertCur
DEALLOCATE insertCur

... warum verunstaltet "ihr" eure Problemstellungen eigentlich immer mit Pseudobezeichnungen, wenn "ihr" den original-Quellcode postet, fällt unsereinem das Antworten leichter - so ein Code-Fetzen ist doch kein Geschäftsgeheimnis (wer soll ich da weitere Infos von ableiten können)

... wozu verwendest du ein SELECT TOP 1 .. da bekommst du sowieso nur einen Datensatz

HTH; Ciao, Frank