I Auslöser für meine Datenbank erstellt haben, die einige Insertion behandelt, aber wenn ich mehrere Werte in 1 SQL-Abfrage hinzufügen, funktioniert es nicht:SQL Server-Trigger mit Schleife für mehrreihige Einfügen
ALTER TRIGGER [dbo].[ConferenceDayTrigger]
ON [dbo].[Conferences]
AFTER INSERT
AS
BEGIN
DECLARE @ID INT
DECLARE @dayC INT
DECLARE @counter INT
SET @counter = 1
SET @ID = (SELECT IDConference FROM Inserted)
SET @dayC = (SELECT DATEDIFF(DAY, start,finish) FROM Inserted)
WHILE @counter <= @dayC + 1
BEGIN
EXEC AddConferenceDay @Id, @counter
SET @counter = @counter +1
END
END
Für einzelne Einfügung es funktioniert ok. Aber was sollte ich ändern/hinzufügen, damit es für jede Zeile der eingefügten Werte ausgeführt wird?
Loops in SQL sind fast immer eine schreckliche Idee. Schleifen innerhalb von Triggern sind wie eine schlechte Idee im Quadrat. Jetzt kommst du vielleicht nicht herum und du musst es so machen, aber ich hoffe es nicht! PS Sie müssen die Zeilen in der "eingefügten" Tabelle durchlaufen, wahrscheinlich mit einem Cursor (eine andere schlechte Idee!) – DavidG