Ich habe eine Tabelle wie folgt, initiale Einfügung wird einen Wert hinzufügen "Cur_cost_unit" Feld, wo "Pre_cost_unit" standardmäßig einen Wert von 0 haben wird. Wenn ich "Cur_cost_unit" auf einen neuen Wert aktualisiere, muss "Pre_cost_unit" mit dem alten Wert von "Cur_cost_unit" aktualisiert werden und im Wesentlichen zum historischen Wert von "Cur_cost_unit" werden. Ich muss wissen, ob meine Trigger beide Felder gleichzeitig aktualisieren wird "Cur_cost_unit" immer neuen Wert und Pre_cost_unit“getting historischen Wert "Cur_cost_unit"Sql Trigger, um einen Feldwert in ein anderes Feld in der gleichen Tabelle zu "verschieben"
My Table:
create table [Prod_Cost]
(
[Ent_id] int not null IDENTITY,
[Prod_name] nvarchar(50) not null,
[Prod_code] nvarchar(50) not null UNIQUE,
[Prod_id] int not null CONSTRAINT [PK_PRODUCT_ID] PRIMARY KEY,
[Cur_cost_unit] money not null DEFAULT(0),
[Pre_cost_unit] money not null DEFAULT(0),
[Dte_Captured] datetime not null,
[Captured_by] char(50) not null
);
Meine Trigger:
CREATE TRIGGER Update_Cur_CostUNIT_2PreV
ON [Prod_Cost]
AFTER UPDATE
AS
DECLARE @Cur_cost_unit MONEY;
DECLARE @Prod_code NVARCHAR(50);
SELECT @Cur_cost_unit=i.[Cur_cost_unit] FROM inserted i;
SELECT @Prod_code = i.[Prod_code] from inserted i;
BEGIN
SET NOCOUNT ON;
BEGIN
UPDATE [Prod_Cost]
SET [Pre_cost_unit] = (SELECT [Cur_cost_unit] FROM [Prod_Cost] where [Prod_code] = @Prod_code),
[Cur_cost_unit] = @Cur_cost_unit
END
END
GO
Vielen dank im Voraus
FYI möchten - Trigger sollten die Situation behandeln, in denen mehrere Zeilen auf einmal ändern sind. Es könnte also mehrere Zeilen in den eingefügten und gelöschten Tabellen geben und Ihr Trigger sollte das korrekt behandeln. –
Sie müssen diesen Trigger so anpassen, dass er auf der Basis gesetzt wird und keine skalaren Variablen wie diese verwendet. –
in einem Update-Trigger .. 'deleted' wird die vorherigen Werte haben – JamieD77