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.
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.