devotionMedlem sedan jan. 20013 582 inlägg 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
@ndersMedlem sedan juni 200032 969 inlägg 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
devotionMedlem sedan jan. 20013 582 inlägg 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
?
@ndersMedlem sedan juni 200032 969 inlägg
devotion skrev:
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
LarsGMedlem sedan dec. 200012 464 inlägg 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
devotionMedlem sedan jan. 20013 582 inlägg
LarsG skrev:
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
Det är det!
Ser ju finfint ut... :)
Skall testa när jag kommer hem...
Mvh
Henrik