Avatar billede kimisraelsen Nybegynder
26. november 2004 - 14:40 Der er 1 kommentar og
1 løsning

Update funktion skal kun gælde på den aktuelle record

Hejsa

Jeg har lavet følgende trigger på min MS SQL Server ved opdatering af min varetabel i Navision Attain, og det fungerer fint nok. Problemet er bare at jeg jo får opdateret alle records, og ikke kun den ene record der udløste triggeren.
Er der nogen ideer til hvordan jeg får fat i hvilken record der bliver opdateret fra Attain, sådan at jeg kan bruge den information til at lave mit select kriterie ud fra?

CREATE TRIGGER [Opdater Varebeskrivelser] ON [dbo].[Item]
FOR INSERT, UPDATE
AS
update [DB1].[dbo].[mif] set [attainDescription1] =
(Select Distinct [Description]
  from [Navision].[dbo].[Item] na
    where [DB1].[dbo].[mif].[mcnr] = [na].[No_]
      Collate SQL_Scandinavian_CP850_CS_AS)
Avatar billede trer Nybegynder
26. november 2004 - 14:49 #1
I din trigger har du to virtuelle tabeller "Inserted" og "Deleted". Inserted indeholder alle nye værdier og Deleted alle de gamle.

Løsningen er, at du joiner din update på "inserted" på din primær nøgle.

A la:

update mytable  set
  col = value
from mytable inner join inserted
on mytable.id = inserted.id
Avatar billede kimisraelsen Nybegynder
30. november 2004 - 11:24 #2
Tusind tak - det var lige det der manglede.
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