---
title: "select @@identity"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/89691-select-identity"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Arne"
published: "2003-11-05T10:45:05.000Z"
updated: "2003-11-08T11:52:28.000Z"
replies: 8
views: 434
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/dotnet/89691-select-identity"
---

# select @@identity

## #1 — Arne, 2003-11-05T10:45Z

I gamla ASP kunde jag direkt efter jag gjort en insert plocka ut senaste id genom:

```
Set RS = Conn.execute("select @@identity")
senaste_id = RS(0)
```

Hur gör jag jag i ASP.NET (VB, kan inte C#) för att enkelt plocka ut mitt senaste insert id?

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

## #2 — Dino, 2003-11-05T10:46Z

Är det i samband med en INSERT eller bara ta ut det senast IDt.

red// Dum fråga. Ändrar frågan

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

## #3 — Arne, 2003-11-05T10:49Z

SQL server 2000

SQL server 2000.........

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

## #4 — niko, 2003-11-05T10:58Z

```
SQLCommand cmd=new SQLCommand("SET NOCOUNT ON INSERT INTO .. SELECT @@IDENTITY SET NOCOUNT OFF", dinconnection);
senaste_id = (int)cmd.ExecuteScalar();
```

Borde kunna funka?

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

## #5 — Dino, 2003-11-05T11:24Z

Blir väl så här i vb.net

```
Function InsertGrr(ByVal a As String, ByVal b As String) As Integer
   Dim para as SqlParameter
   Dim returnID as Integer
   Dim conn as new SqlConnection([i]connectionstring[/i])
   Dim cmd as new SqlCommand("up_InsertGrr", conn)
   cmd.CommandType = CommandType.StoredProcedure
   
   cmd.ParaMeters.Add("@a", SqlDbType.NVarChar, 100).Value = a       
   cmd.Parameters.Add("@b", SqlDbType.NVarChar, 100).Value = b
   para = cmd.Parameters.Add("@id", SqlDbType.Int)      
   para.Direction = ParameterDirection.Output

   try
      cmd.ExecutNonQuery()
      returnID = cmd.Parameters("@id").Value
   catch ex as Exception
       'gör något
   finally
      conn.Close()
   end try
   return returnID
End Function
```

 
StoredProcedure

```
CREATE PROCEDURE up_InsertGrr
@a nvarchar(100),
@b nvarchar(100),
@id int OUTPUT
AS
SET NOCOUNT ON
INSERT grr(grr_a, grr_b) 
VALUES(@a, @b)
SET @id = @@IDENTITY
GO
```

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

## #6 — Arne, 2003-11-06T09:11Z

id blir 0

Hmmm får det inte att fungera.
Jag kör denna kod efter insert men jag får bara värdet 0
Varför?

```
	Dim identity as integer
		Dim MyCommand As New SqlCommand("select @@identity as identity FROM min_tabell", MyConnection)
	Response.Write(identity)
```

Min lösning är just nu att köra Select Top 1 id

Men den lösningen är väl inte 100....

Någon kan ju hinna lägga in före, jag vill ha direkt det id min insert gav...

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

## #7 — niko, 2003-11-06T09:33Z

Provade du det jag skrev?

I VB.NET:

```
Dim MyCommand As SqlCommand = New SqlCommand("SET NOCOUNT ON INSERT INTO .. <fyll på din insert här> SELECT @@IDENTITY SET NOCOUNT OFF", MyConnection)
Response.Write("ID = " & MyCommand.ExecuteScalar().ToString())
```

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

## #8 — Gladh, 2003-11-06T11:48Z

> select @@identity as identity FROM min_tabell

SELECT @@INDENTITY finns inte i någon tabell, utan är ett Command som går på din session. 
Om du bara skriver SELECT @@IDENTITY så kommer den ge dig ID på din Senast insatta post i denna session.

SELECT TOP 1 kan man inte skriva eftersom en annan process kan komma in och skriva in en ny post innan du har hämtat ut ditt ID från din post.

SELECT @@IDENTITY är det enda vettiga sätt att göra det på.

\- M

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

## #9 — emission, 2003-11-08T11:52Z

Vill man ha tabellberoende @@IDENTITY så får man använda IDENT_CURRENT('tabellnamn')

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

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/89691-select-identity
