Vinnaren i pepparkakshustävlingen!
2006-08-25, 10:15
  #1
Medlem
Exempel: Jag har en tabell med produkter. Tabellen har ID som primärnyckel. ID:t räknas upp med auto-increment.

Låt nu säga att jag på en websida gör följande:
1) Jag skapar en ny produkt. INSERT INTO...
2) Jag hämtar ID:t för den nyss skapade produkten. SELECT ID...
(Jag vet att det finns ett bättre sätt för att hämta det senast skapade värdet, men jag kommer inte på vad det heter. Typ "@@INDEX"?)

Låt oss vidare säga att två användare besöker denna hemsida exakt samtidigt. Då borde det finnas en risk att hans 1) körs mellan min 1) och 2)? Det skulle ju i så fall resultera till att både min och hans 2) returnerar samma ID, vilket inte vore speciellt bra.

Om jag gör steg 1) och 2) i samma Stored procedure, finns risken kvar då? Eller köar servern alla Stored procedure-körningar så att sådana fel inte kan inträffa?

Jag är mycket väl medveten om att risken är extremt liten, men finns den ens?
Citera
2006-08-26, 13:06
  #2
Medlem
McBs avatar
Returnera ID:t redan i din första store procedure, så att du vet vilket ID din nyss skapade produkt har redan innan du kör nästa SP.
Citera
2006-08-26, 14:04
  #3
Medlem
Balthazaer-s avatar
Två sekunder på google..
http://mkruger.cfwebtools.com/index....D4FA5361852009
Citera
2006-08-27, 00:49
  #4
Medlem
Ahh! Nu har jag lärt mig både att använda @@SCOPE_IDENTITY och att Stored procedures kan returnera data! Nice! Alla problem ur världen. Tack, tack!
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback