---
title: "Göra saker i trigger"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/180466-göra-saker-i-trigger"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "devotion"
published: "2009-09-28T17:36:43.000Z"
updated: "2009-09-29T19:51:53.000Z"
replies: 6
views: 477
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/180466-göra-saker-i-trigger"
---

# Göra saker i trigger

## #1 — devotion, 2009-09-28T17:36Z

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

Permalänk: https://www.webforum.nu/p/180466

## #2 — @nders, 2009-09-28T17:52Z

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

Permalänk: https://www.webforum.nu/p/2206324

## #3 — devotion, 2009-09-28T18:13Z

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

?

Permalänk: https://www.webforum.nu/p/2206329

## #4 — @nders, 2009-09-29T06:45Z

> **[devotion skrev:](https://www.webforum.nu/p/1482232)**
>
> 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

Permalänk: https://www.webforum.nu/p/2206377

## #5 — LarsG, 2009-09-29T07:31Z

```
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

Permalänk: https://www.webforum.nu/p/2206379

## #6 — devotion, 2009-09-29T07:41Z

> **[LarsG skrev:](https://www.webforum.nu/p/1482286)**
>
> ```
> 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

Permalänk: https://www.webforum.nu/p/2206385

## #7 — devotion, 2009-09-29T19:51Z

Perfekt! :)  

Mvh
Henrik

Permalänk: https://www.webforum.nu/p/2206462

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/180466-göra-saker-i-trigger
