Ich habe diese Tabellenstruktur:Massenaktualisierung der gleichen Zeile Spalte Trigger in SQL Server mit
CREATE TABLE JoiningDate
(
Id INT,
DateofJoining DATETIME,
STATUS VARCHAR(10),
DaysCount INT
)
Diese Tabelle mit 1000 Datensätze mit DaysCount als Nullwert gefüllt wird.
Ich habe einen Trigger erstellt, wie unten für diese Tabelle zu aktualisieren DaysCount
. Immer wenn es ein Update von DateOfJoining
oder Status
Spalten gibt, sollte DaysCount
im Trigger berechnet werden und automatisch aktualisiert werden.
Dies ist der Umriss des Abzugs:
CREATE TRIGGER [dbo].[trigger_JoiningDate]
ON [dbo].[JoiningDate]
AFTER INSERT, UPDATE
AS
BEGIN
DECLARE @Id INT
DECLARE @DateJoining DATETIME
DECLARE @Result INT
SELECT @Id = Id,
@DateJoining = DateofJoining,
FROM INSERTED
SET @Result = [Formula To Calculate Days]
UPDATE JoiningDate
SET DaysCount = @Result
WHERE Id = @Id
END
Ich bin in der Lage die Zählung immer aktualisiert einzelnen Datensatz zu sehen. Bei Bulk-Updates wird nur der erste Datensatz aktualisiert.
Mit Hilfe von stackoverflow habe ich versucht, anstelle von Trigger, TRIGGER_NESTLEVEL(), etc. Optionen zu verwenden, aber immer noch alle anderen Rest der Zeilen nicht aktualisiert.
Schnellere Hilfe geschätzt.
Hallo Marc, Mein scenario ist die unten Abfrage ausführen (idealerweise sollte es alle Datensätze aktualisieren) und wiederum alle Zeilen der Spalte DaysCount sollte basierend auf diesem Zeilenwert aktualisiert werden. Aber jetzt, wenn ich die obige Abfrage ausführen, aktualisiert es den ersten Datensatz allein UPDATE JoiningDate SET STATUS = 'Verbunden' –
Der Trigger aktualisiert * nur * die Zeilen, die tatsächlich aktualisiert wurden. Wie viele Zeilen hat Ihre 'UPDATE'-Anweisung beeinflusst? –
für 1000 Zeilen, für obige Update-Anweisung, es sagt 1000 Zeilen betroffen sind. aber tatsächlich, erste Reihe allein wurde aktualisiert für Spalte DaysCount andere Zeilen sind immer noch NULL –