webForumDet fria alternativet
Logga in / Bli medlem

Har @@IDENTITY problem

Databaser & SQL

7 svar · 255 visningar · startad av Dino

Medlem sedan sep. 20011 914 inlägg
Trådstart#1

Har en enkel select och sen vill jag ha dess id med @@IDENTITY, men det blir null. Varför? Första selecten retunerar en rad som synses.

SELECT TOP 1 ord_id, ord_cust_id, ord_message
FROM orders
WHERE ord_handle_id = 0
SELECT @@IDENTITY --Denna selecten har jag bara för att se om något retuneras

Och sen undrar jag om man skall använda:
SELECT SCOPE_IDENTITY()
eller
SELECT @@IDENTITY

Medlem sedan juni 200032 967 inlägg
#2

Har du gjort någon INSERT i tabellen då? @@IDENTITY returnerar ID på den post som senast lades in med INSERT i tabellen av aktuell anslutning. Har du inte gjort INSERT kan inget räknarvärde returneras.

Mvh

Medlem sedan aug. 20003 575 inlägg
#3

Om du vill kolla om något retuneras kolla då på den första sql raden. Och kolla om det finns något där.

Medlem sedan sep. 20011 914 inlägg
#4

Nä, det har jag ju inte. Läste i dokumentationen och där stod det SELECT INTO, måste ha missat INTO.
Ok, glöm den frågan då. Något svar på andra frågan? I dokumentationen, igen, så står det att "SCOPE_IDENTITY returns the value only within the current scope, @@IDENTITY is not limited to a specific scope". Vad är bäst att använda?

Medlem sedan juni 200032 967 inlägg
#5

Kan du berätta vad det är du vill göra?

Medlem sedan sep. 20011 914 inlägg
#6

Nä, hittade precis SCOPE_IDENTITY. Har använt @@IDENTITY förut, så nu blev jag bara allmänt nyfiken på vad som skall användas när.

Medlem sedan dec. 200012 464 inlägg
#7

scope_identity ger det värdet som senast genererades i samma scope (rutin/trigger) som där du använder funktionen. I de flesta fall är det samma värde som @@identity.

Det fall som skiljer sig åt är om du gör insert på en tabell som har en insert trigger där du gör insert på en tabell som också har en räknare.

I det fallet så innehåller @@identity det värde som genererades för inserten i triggern och scope_identity innehåller det värde som genererades för insert i tabellen som har en trigger.

Medlem sedan sep. 20011 914 inlägg
#8

Ok, då vet jag för möjliga framtida bruk. Tack. :)

254 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)