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.
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
CREATE TRIGGER [trg_tblTemp] ON [dbo].[tblTemp] FOR UPDATE AS UPDATE tblTemp SET dtmModified = GETDATE() WHERE tblTemp.[ID] = (SELECT ID FROM inserted)
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.
Tak, det giver mening. Det vil jeg gøre fremover...
Synes godt om
Ny brugerNybegynder
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.