---
title: "Senaste ilagda id:t"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/108969-senaste-ilagda-id-t"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Ciliax"
published: "2004-08-11T13:35:05.000Z"
updated: "2004-09-06T03:37:54.000Z"
replies: 15
views: 618
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/108969-senaste-ilagda-id-t"
---

# Senaste ilagda id:t

## #1 — Ciliax, 2004-08-11T13:35Z

Hallojsan...

Jag skulle behöva hämta ut ett id som jag strax innan lagt in i en tabell för att använda detta som en främmande nyckel i en annan insert i en annan tabell....

Först sätter jag in detta i en tabell..... i denna tabell genereras ett automatiskt id som jag direkt vill ha ut och använda som en främmande nyckel i en senare insertsats.........

```
"INSERT INTO LokalGrupp(namn,ou)VALUES('"&lokalNamn(i)&"','"&Lm.Name&"')"
```

Vad jag undrar.... vad är smidigast för att lösa detta? En select sats som hämtar det högsta numret av de Id:n som finnes å tar det... Är detta säkert? Finns det andra problem med detta?

Tacksam för svar är en novice på sql :)

MVH Ciliax

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

## #2 — Ciliax, 2004-08-11T13:36Z

tilläggas bör att jag programmerar i vbscript och databashanteraren är Access! :)

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

## #3 — LarsG, 2004-08-11T14:00Z

```
select @@identity
```

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

## #4 — M.Cheraghi, 2004-08-11T14:08Z

> **LarsG skrev:**
>
> ```
> select @@identity
> ```

Kan man inte använda "Last_Insert_ID()" Jag har ingen koll på läget därför frågar jag :)

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

## #5 — LarsG, 2004-08-11T14:39Z

Nej. Den funktionen finns i Mysql.

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

## #6 — M.Cheraghi, 2004-08-11T14:45Z

> **LarsG skrev:**
>
> Nej. Den funktionen finns i Mysql.

Jaha okej, så 

"select @@identity" i Access

och
 
"Select last_insert_id()" i mySQL

ger samma resultat?

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

## #7 — Ciliax, 2004-08-12T05:29Z

hmmm Jag tackar för de svar jag fått.... Men måste göra nått vajsing... Får bara 0 som svar fast det finns massa id.

EXPR1000 som kolumnnamn och en nolla som resultat om jag kör som ni skrev.

skriver jag Select @@identity from LokalGrupp så får jag en radda med nollor......

Vad gör jag för fel.....

Jättetacksam för svar från dessa kunniga herrar! :)

MVH Ciliax

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

## #8 — Ciliax, 2004-08-12T05:55Z

Är det nå fel att göra som jag gjorde nu med Select Max(id)??

MVH Ciliax

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

## #9 — LarsG, 2004-08-12T06:20Z

Du kan bara använda 

```
select @@identity
```

direkt efter en insert i en tabell som har en räknarkolumn.

Att använda 

```
select max(id) from t
```

är inte bra.

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

## #10 — Ciliax, 2004-08-12T06:52Z

Jag är inte riktigt med..... skriver jag Select @@identity some n egen fråga direkt efter?? Iså fall så får jag bara 0 av nån anledning.... eller lägger jag till det efter insertsatsen i samma fråga?? Känne rmig lite trög! :)

Varför om jag törs fråga är inte Max(id) bra? 

MVH Ciliax

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

## #11 — spango, 2004-08-12T09:03Z

> **Ciliax skrev:**
>
> Jag är inte riktigt med..... skriver jag Select @@identity some n egen fråga direkt efter?? Iså fall så får jag bara 0 av nån anledning.... eller lägger jag till det efter insertsatsen i samma fråga?? Känne rmig lite trög! :)

Du gör en vanlig select från samma anslutning efter att du gjort din insert. Först insert, sen select. 

När du säger *SELECT @@identity as last_id* får du fram det senaste id:t som automatgenererats och plockar sedan fram det med dinrecordset("last_id")

> **Ciliax skrev:**
>
> Varför om jag törs fråga är inte Max(id) bra?

Därför att du inte frågar efter det du vill ha. Resultatet blir förmodligen detsamma, men det du frågar efter är det högsta id-numret, inte det från inserten du körde. Teoretiskt sett finns det en möjlighet att det inte är samma. Anta t.ex. att det här ligger på en webbserver, och två personer arbetar samtidigt. Om båda begär att få lägga in varsin ny post samtidigt, måste naturligtvis arbetet fördelas. Anta då att person #1 gör sin insert, sen går turen över till tråden som sköter person #2 som gör sin insert. Efter detta går turen tillbaks till #1 som gör sin select för att hitta id:t från inserten. Använder man då max(id) får man id:t från person #2:s insert, @@identity funkar däremot som förväntat.

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

## #12 — Ciliax, 2004-08-12T09:42Z

Jag tackar å bugar.... Problemet var att jag inte använde samma connection.... Nu funkar det klockrent...  
Tackar även för den fina förklaringen om Max(id)....

MVH Ciliax

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

## #13 — MickeA.com, 2004-09-04T21:23Z

HejHej

Nu drar jag upp en gammal tråd, mest för att slippa skapa en ny om samma sak.

Jag har följande:

```
strSQL =	"INSERT INTO tbl_hiss (" &_
						"Hiss_Adress, Hiss_Gatunummer, Hiss_Ovr_Addr, Hiss_Portkod, Hiss_Nycklar, Hiss_Ovr_Info, " &_
						"Hiss_Area, Hiss_Karta, Hiss_RegNr, Hiss_Omr_Ort, Hiss_BesOrg, Hiss_Ans_Montor, Hiss_Deleted" &_
						") VALUES('" &_
						strAD & "', '" &_
						strGN & "', '" &_
						strOA & "', '" &_
						strPK & "', '" &_
						strNR & "', '" &_
						strOI & "', '" &_
						strOE & "', '" &_
						strMP & "', '" &_
						strRN & "', '" &_
						strPO & "', '" &_
						strBO & "', '" &_
						strSM & "', " &_
						strHD & ")"

		
		Set oRec = oConn.Execute(strSQL)
		Set oRec = oConn.Execute("SELECT @@identity as Last_Id")
		lastId = oRec("Last_Id")
```

Problemet är att Last_ID hela tiden blir 0 (noll)
Kan det här bero på att jag använder "Replikerings ID"? För på ett annat ställe kör jag samma grej, vilket funkar bra där, skillnaden är att jag kör en vanlig "räknare" med heltal.

Vore bra om jag kunde få hjälp med det här.
Tack!

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

## #14 — @nders, 2004-09-05T13:34Z

> Kan det här bero på att jag använder "Replikerings ID"?

Ja, det är därför.

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

## #15 — MickeA.com, 2004-09-05T17:32Z

Ahh, vilket skit.. ;)
Aja, får väl struna i det här då. Det är dåligt att det inte går att byta datatyp på ett sådant fält.

Det finns alltså inget annat sätt att ta reda på senast ilagda ID't i en tabell med rep. id?

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

## #16 — @nders, 2004-09-06T03:37Z

För att ta reda på det senaste ID:t måste du ha en räknarkolumn.
Du får lägga till en sådan, hämta ut @@identity, och sedan hämta ut replikerings-id:t som tillhör posten med uthämtat räknarvärde.

Varför använder du replikerings-ID?

mvh

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/108969-senaste-ilagda-id-t
