Avatar billede nlbgf Nybegynder
29. januar 2001 - 13:33 Der er 6 kommentarer og
1 løsning

Trigger

Jeg har en trigger som kører hver gang der bliver indsat en post i min database. Hvordan finder jeg (i triggeren) ud af, hvilken ID (primærnøgle, \"autonumber\") min nyindsatte post har?

Da ID\'en er en autonumber er det selvfølgelig den højeste ID der er den nyeste. Desværre forholder det sig sådan, at der bliver indsat lidt over 80 poster ad gangen hvert andet minut. Det er vel ikke sikkert, at jeg bare kan tage den højeste ID for at være den der lige er blevet indsat? Hvis triggeren bliver udført bare et splitsekund efter, at den næste post er blevet indsat, går det jo helt galt.

Så: Hvordan finder jeg (min trigger) ud af, hvilke data der lige er blevet indsat i databasen?
Avatar billede fmadse1 Nybegynder
29. januar 2001 - 17:12 #1
kan du ikke

Declare @Max int

Select @Max=max id from \'din tabel\'
og så bagefter

select from \'din tabel\'
where id=@max

?
vh fum
Avatar billede fmadse1 Nybegynder
29. januar 2001 - 17:13 #2
undskyld, der skulle selvfølgelig stå

select * from \'din tabel\'
where id=@max
Avatar billede fmadse1 Nybegynder
29. januar 2001 - 17:14 #3
Havde selfølgelig ikke læst hele spørgsmålet
<<hehe>>
Avatar billede fmadse1 Nybegynder
29. januar 2001 - 17:14 #4
men kan man så ikke bruge @@identity ?
Avatar billede nolle_k Nybegynder
04. februar 2001 - 00:06 #5
Meget enkelt!

declare @AutoNum int

SELECT @AutoNum = ID from inserted

Voila!!! Den indsatte post er fundet!!
Inserted tabellen er kun til rådighed i den pågældende trigger og indeholder de samme felter som den tabel, der resulterer i at triggeren fyres af.
Sammen med denne kan deleted tabellen bruges! Denne gør det muligt at se hvilke rækker der slettes og hvilke der opdateres da en opdatering kan betragtes som en slettet og en indsat række!
Faktisk meget genialt lavet af MS!!

Det kan muligvis være, at du skal lave en cursor da Inserted tabellen muligvis kan indeholde mere end en række!!!
Avatar billede nlbgf Nybegynder
05. februar 2001 - 16:00 #6
Okay, jeg kigger lige på det i morgen...
Avatar billede nlbgf Nybegynder
12. februar 2001 - 10:05 #7
Tak for hjælpen
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