Avatar billede jakobg Nybegynder
15. januar 2004 - 13:29 Der er 10 kommentarer

Opdateret kolonne med Triggers

Triggers for nybegyndere:

Jeg har en tabel med følgende kolonner:
ID - int (identity)
dtmCreated - datetime (default GETDATE)
dtmModified - datetime (default GETDATE)

Når jeg laver updates og/eller deletes i denne tabel, vil jeg gerne bruge en trigger til at opdatere dtmModified-feltet i den pågældende række til dags dato & tidspunkt.

Er det ikke pishamrende nemt?
Avatar billede jakobg Nybegynder
15. januar 2004 - 14:01 #1
Har løst den:

CREATE TRIGGER [trg_m_tbl_Temp] ON [dbo].[tbl_Temp]
FOR UPDATE
AS
UPDATE tbl_Temp SET dtmModified = GETDATE()
FROM inserted, tbl_Temp
WHERE tbl_Temp.[ID] = inserted.ID
Avatar billede mufoxe Nybegynder
15. januar 2004 - 14:01 #2
Havde lige præcist skrevet det sidste på. ÆV!
Avatar billede jakobg Nybegynder
15. januar 2004 - 14:35 #3
mufoxe, kom med et svar, så får du point'ene... :)
Avatar billede jakobg Nybegynder
15. januar 2004 - 14:38 #4
Har i øvrigt ændret den til dette:

CREATE TRIGGER [trg_tblTemp] ON [dbo].[tblTemp]
FOR UPDATE
AS
UPDATE tblTemp
SET dtmModified = GETDATE()
WHERE tblTemp.[ID] = (SELECT ID FROM inserted)

Jeg syns den er lidt pænere...
Avatar billede mufoxe Nybegynder
15. januar 2004 - 14:40 #5
Pyt med det :) Jeg vil bare gerne have lov til at tude lidt. Sidder og læser til SQL Server 2000 eksamen, så jeg kan godt bruge øvelsen :)
Avatar billede jakobg Nybegynder
15. januar 2004 - 14:52 #6
Held og lykke, den eksamen kommer jeg nok heller ikke udenom før eller senere. Men der er lang vej endnu for mit vedkommende... :)
Avatar billede trer Nybegynder
15. januar 2004 - 18:07 #7
Du skal lige være obs på, at det sidste update har dårligere performance end den første
Avatar billede jakobg Nybegynder
15. januar 2004 - 18:57 #8
trer,
Hvordan kan det være? Vil den første løsning være den bedste, rent performancemæssigt?
Kom med et svar, så kan du få pointene... :)
Avatar billede trer Nybegynder
15. januar 2004 - 20:26 #9
Jepper. Jeg vil ikke blive for teknisk i forklaringen, og kommer derfor ikke ind på nogle undtagelser og antagelser, men kort:

Grunden er, at din subselect i IN'en er et selvstændigt resultatsæt som sql server skal lægge op i ram. Derefter skal den foretage en søgning gennem dette resultatsæt for at finde den eller de forekomster der matcher tbltemp.id værdien - for hver række i tbltemp.

Din join derimod foretages i en operation - derfor vil den typisk være bedre.
Avatar billede jakobg Nybegynder
15. januar 2004 - 22:07 #10
Tak, det giver mening. Det vil jeg gøre fremover...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester