Det kan bli problematiskt - "inserted" innehåller bara värdena som finns efter updaten.
Kanske är det smartare att skapa en stored procedure som 1) sparar undan värden i en loggtabell, 2) uppdaterar, och 3) sparar värden efter ändring.
mvh
Databaser & SQLur Databashanterare & SQL
6 svar · 471 visningar · startad av devotion
Jag tänkte skapa en trigger enligt:
CREATE TRIGGER a_InsertOnUpdateCustomT2
ON tblTask
FOR UPDATE
AS
IF UPDATE(CustomT2)
BEGIN
INSERT INTO a_tblTaskAreaChange (Modified, TaskId, TaskNr)
SELECT GETDATE(), Id, taskNr FROM inserted
END
Kan man få med både det gamla och det nya värdet på CustomT2 och skiva in det i tblTaskAreaChange ?
:)
Mvh
Henrik
Det kan bli problematiskt - "inserted" innehåller bara värdena som finns efter updaten.
Kanske är det smartare att skapa en stored procedure som 1) sparar undan värden i en loggtabell, 2) uppdaterar, och 3) sparar värden efter ändring.
mvh
Hej igen,
Det är följande Update jag vill köra:
UPDATE tblTask
SET CustomT2 =
CASE
-- Geografiska arbetsgrupper
WHEN wg.id in (77713,77714,77715,77716,77717,77718,77720,77729) THEN
c.Category
-- Natten
WHEN wg.id in (77719) THEN
wg.Name
-- Behåll
ELSE
CustomT2
END,
Modified = GETDATE()
FROM tblTask t
INNER
JOIN tblCustomer c
ON t.CustomerNr = c.[Nr]
INNER
JOIN tblUsers u
ON t.[User] = u.[Name]
INNER
JOIN tblWorkGroups wg
ON u.GroupId = wg.[Id]
WHERE DATEDIFF(d, t.planstartdate, GETDATE()) = 1
AND (t.CustomT2 IS NULL OR t.CustomT2 = '')
Hur får man till proceduren då? :)
Blir arbetsgången så här typ:
Göra en select på motsvarande urval skriva ner gamla värde till logg
göra update
skriva ner nya värden till logg
?
Hur får man till proceduren då? :)
Blir arbetsgången så här typ:
Göra en select på motsvarande urval skriva ner gamla värde till logg
göra update
skriva ner nya värden till logg
?
Ja, det var så jag hade tänkt mig.
mvh
INSERT INTO a_tblTaskAreaChange (Modified, TaskId, TaskNr,oldT2,NewT2)
SELECT GETDATE(), inserted.Id, inserted.taskNr,inserted.customT2, deleted.customT2
FROM inserted join deleted on inserted.id = deleted.id
under förutsättning att id är primärnyckel
INSERT INTO a_tblTaskAreaChange (Modified, TaskId, TaskNr,oldT2,NewT2) SELECT GETDATE(), inserted.Id, inserted.taskNr,inserted.customT2, deleted.customT2 FROM inserted join deleted on inserted.id = deleted.idunder förutsättning att id är primärnyckel
Det är det!
Ser ju finfint ut... :)
Skall testa när jag kommer hem...
Mvh
Henrik