---
title: "@@IDENTITY som inte vill fungera"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/128943-identity-som-inte-vill-fungera"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Obbelix"
published: "2005-05-27T09:00:10.000Z"
updated: "2005-05-27T11:06:00.000Z"
replies: 7
views: 503
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/128943-identity-som-inte-vill-fungera"
---

# @@IDENTITY som inte vill fungera

## #1 — Obbelix, 2005-05-27T09:00Z

När jag vill få fram senaste inlagda posten har jag tidigare använt "SELECT @@IDENTITY" och det har fungerat perfekt.

Men nu helt plötsligt vill det sig inte och enda skillnaden (som jag kan se) från tidigare gånger jag använt det, är att jag nu har flera inserts innan jag vill ha fram ett id. Spelar det nån roll?
Har även testat med "SCOPE_IDENTITY()" men med samma resultat; "NULL".

Använder MSSQL

Det jag vill är alltså ta fram vilket id posten i tabellen "ccc" fick och uppdatera "bla" i tabellen "ddd" med det värdet.
exempel:

```
SQL = "INSERT INTO aaa (bla........"
adocon.execute SQL,,128

SQL = "INSERT INTO bbb (bla........"
adocon.execute SQL,,128

SQL = "INSERT INTO ccc (bla........"
adocon.execute SQL,,128

set rs = adocon.execute("SELECT @@IDENTITY")
   SQL = "UPDATE ddd set bla=" & rs(0) & " WHERE id=xxx"
   adocon.execute SQL,,128
rs.close : set rs = nothing
```

Jag ser inget konstigt i detta, men rs(0) returnerar NULL.

Nån som kan hjälpa till med detta?

Snart är det helg!  :birp

Permalänk: https://www.webforum.nu/p/128943

## #2 — @nders, 2005-05-27T09:06Z

Frågan borde returnera ID från ccc, under förutsättning att det är en vanlig räknare, och inget knepigt replikerings-id / guid.

Testa att lägga med @@identity-selectfrågan i samma klump som din sista insert, och plocka ut det direkt.

mvh

Permalänk: https://www.webforum.nu/p/1620584

## #3 — Obbelix, 2005-05-27T09:12Z

Så här då eller?

```
SQL = "UPDATE ddd set bla=(SELECT @@IDENTITY) WHERE id=xxx"
```

Permalänk: https://www.webforum.nu/p/1620586

## #4 — Obbelix, 2005-05-27T09:37Z

Nej, tyvärr funkade det inte så heller. Får "NULL" som resultat.

/red: Kan ju tillägga att alla inserts ligger i en loop som snurrar allt från 1 till 8 gånger, men det borde väl inte spela någon roll.

Permalänk: https://www.webforum.nu/p/1620599

## #5 — @nders, 2005-05-27T10:08Z

Jag menar så här:

```
SQL = "SET NOCOUNT ON " & vbcrlf & _
       "INSERT INTO ccc (bla........" & vbcrlf & _
       "SELECT @@IDENTITY"
set objRS = adocon.execute(SQL)
ID = objRS(0)
```

Permalänk: https://www.webforum.nu/p/1620621

## #6 — Obbelix, 2005-05-27T10:58Z

Se där ja!
Funkar fint :) Tack!
Två följdfrågor...  
"SET NOCOUNT ON" betyder vad i denna fråga? 
Och vad hade hänt om det inte stod där?

Permalänk: https://www.webforum.nu/p/1620659

## #7 — @nders, 2005-05-27T11:01Z

Set nocount on gör att inte SQL Server räknar poster. Hade du inte haft den där hade du fått två recordsets tillbaka, ett tomt (med någon info om "1 row affected" i någon egenskap någonstans), och ett med resultatet av din SELECT. Det tomma recordsetet ligger överst, och du kommer inte direkt åt recordsetet med informationen i.

Man kan dock "byta" till det andra recordsetet med recordsetobjektets metod NextRecordset.

Mvh

Permalänk: https://www.webforum.nu/p/1620661

## #8 — Obbelix, 2005-05-27T11:06Z

OK, då vet jag.
Tack återigen!

Permalänk: https://www.webforum.nu/p/1620664

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/128943-identity-som-inte-vill-fungera
