---
title: "@@IDENTITY blir 0"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/154268-identity-blir-0"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "web00132"
published: "2006-11-27T21:03:13.000Z"
updated: "2006-11-29T23:28:24.000Z"
replies: 13
views: 709
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/154268-identity-blir-0"
---

# @@IDENTITY blir 0

## #1 — web00132, 2006-11-27T21:03Z

Har sökt i forumet men hittar inget bra svar på detta.

```
sql = "INSERT INTO upphovsman(fornamn,efternamn,land,fodelsear) VALUES('" & upload.form("nyupphovsman_fornamn") & "','" & upload.form("nyupphovsman_efternamn") & "','" & upload.form("nyupphovsman_land") & "','" & upload.form("nyupphovsman_fodelsear") & "')"
set tmpRS = getDB().execute(sql)
sql = "SELECT @@IDENTITY AS test"
set tmpRS2 = getDB().execute(sql)
id2 = tmpRS2("test")
```

 Variabeln id2 blir 0 hur jag än gör. Beror det på min DB-funktion, getDB()? Den ser ut så här:

```
function getDB()
	set getDB = server.createobject("Adodb.connection")
	getDB.open "DRIVER={MySQL ODBC 3.51 Driver};SERVER=servernamn;PORT=3306;DATABASE=dbnamn; USER=anvandare;PASSWORD=losenord;OPTION=16384;"
end function
```

 Den borde ju inte stängas i alla fall mellan insertarna liksom. Jag kör ASP mot MySQL 5.

Litet tillägg: Tabellen 'upphovsman' har alltså ett auto_increment-fält som heter 'upphovsmanID'.

PS. Finns någon fin (gärna svensk) tutorial på Stored Procedures i MySQL 5 så man slipper de här problemen? Ge gärna tips! DS.

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

## #2 — emission, 2006-11-27T21:28Z

Så ska du absolut inte använda getDB, eftersom du inte kan stänga kopplingen. Garbage collection-systemet är inte något att falla tillbaka på.

```
set conn=getDB()
sql = "INSERT INTO upphovsman(fornamn,efternamn,land,fodelsear) VALUES('" & upload.form("nyupphovsman_fornamn") & "','" & upload.form("nyupphovsman_efternamn") & "','" & upload.form("nyupphovsman_land") & "','" & upload.form("nyupphovsman_fodelsear") & "');SELECT @@IDENTITY AS test"
set tmpRS = conn.execute(sql).NextRecordset
id2 = tmpRS ("test")
```

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

## #3 — Travoni, 2006-11-27T21:28Z

Du skall väl använda SELECT last_insert_id i mysql.
<http://www.google.se/search?hl=sv&q=%22last_insert_id%22+mysql+5.0&btnG=S%C3%B6k&meta=>

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

## #4 — web00132, 2006-11-27T21:59Z

Travoni: Det gick lika bra bra med @@IDENTITY
emission: Well, I did not know that   :birp

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

## #5 — Travoni, 2006-11-28T21:07Z

Japp, du måste hämta det senaste inlägget i samma scope.

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

## #6 — Travoni, 2006-11-29T15:57Z

Error...

Jag gör precis enligt emissions förslag, men får detta fel:

```
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[MySQL][ODBC 3.51 Driver][mysqld-5.0.15-standard-log]You have an error in your SQL syntax; 
check the manual that corresponds to your MySQL server version for the right syntax to use near ';SELECT @@IDENTITY' at line
```

 
Har testat både med  @@IDENTITY och last_insert_id()
och både med och utan alias

```
sql = "INSERT INTO tbl(ett,tva,tre) VALUES('Ett','Två','Tre');SELECT @@IDENTITY"
set rs = connection.execute(sql).NextRecordset
lastid = rs(0)
```

Vad felar?

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

## #7 — LarsG, 2006-11-29T16:15Z

Du kan inte skicka flera statement i samma executeanrop.

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

## #8 — emission, 2006-11-29T16:23Z

Klarar inte MySQL(-klienten) det? Det var värst.

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

## #9 — Travoni, 2006-11-29T20:37Z

Och vad återstår att göra då om jag vill ha ut det senaste värdet?

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

## #10 — web00132, 2006-11-29T22:31Z

```
sql = "INSERT INTO tbl(ett,tva,tre) VALUES('Ett','Två','Tre');"
set rs = connection.execute(sql)
sql = "SELECT @@IDENTITY;"
set rs = connection.execute(sql)
lastid = rs(0)
```

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

## #11 — emission, 2006-11-29T22:32Z

Exekvera två gånger.

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

## #12 — Travoni, 2006-11-29T22:44Z

Ok, men hur stor är sannoligheten att någon skall exekvera imellan? 
Antar att det även kommer an på hur frekvent den används.

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

## #13 — emission, 2006-11-29T23:15Z

> **Travoni skrev:**
>
> Ok, men hur stor är sannoligheten att någon skall exekvera imellan?

Det spelar ingen roll. Värdets scope/livslängd är uppkopplingen.

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

## #14 — Travoni, 2006-11-29T23:28Z

aha, vad bra då. :)

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/154268-identity-blir-0
