---
title: "Fetcha AutoID"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/83493-fetcha-autoid"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "SteveP"
published: "2003-08-05T10:59:28.000Z"
updated: "2003-08-05T12:03:37.000Z"
replies: 9
views: 313
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/83493-fetcha-autoid"
---

# Fetcha AutoID

## #1 — SteveP, 2003-08-05T10:59Z

När jag gjort en INSERT så skapas ett unikt ID för posten.
Kan jag på nåt sett få tag på det ID't i en variabel?

Trigger kanske vore lämpligast?

Jag hade tänkt mig nåt sånthär:

```
CREATE trigger tg_SelectID_LCPFiles on tblLCPFiles
for insert
as

select  <IDT som Skapades> as LatestID from tblLCPFiles
```

Men hur selectar jag ID't som precis skapades?

Är detta åt rätt håll?

```
select @LCPFileID = LCPFileID from Created
```

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

## #2 — @nders, 2003-08-05T11:15Z

variabeln @@IDENTITY innehåller räknarvärdet för den nyss insatta posten. Alltså:

```
SELECT @@IDENTITY
```

Mvh

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

## #3 — SteveP, 2003-08-05T11:17Z

Är @@IDENTETY alltid Primary keyn?

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

## #4 — @nders, 2003-08-05T11:18Z

Nej, det är räknarvärdet. Det spelar ingen roll vilket fält som är primärnyckel.

mvh

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

## #5 — SteveP, 2003-08-05T11:41Z

```
	strSQL = "SpLCPFiles_Insert " _
				& ContactID & ",'" _
				& OpenDate & "'"

	ObjConn.Execute(strSQL)
	Response.Write ObjRs("NewID")
```

SP'n ser ut såhär

```
CREATE PROCEDURE spLCPFiles_Insert

	@ContactID	INT,
	@OpenDate	DATETIME

AS

INSERT INTO TblLCPFiles
	(
	ContactID,
	OpenDate
	)

VALUES
	(
	@ContactID,
	@OpenDate
	)

SELECT @@IDENTITY AS NewID
GO
```

Jag har kört den i Query Analyzer och den returnerar ett fält med det nya ID't och fältet heter NewID

Men när jag försöker skriva ut det med Response.Write ObjRs("NewID")

Så får jag Item cannot be found in the collection corresponding to the requested name or ordinal.

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

## #6 — @nders, 2003-08-05T11:44Z

Det är för att din procedur faktiskt returnerar två recordsets. Det första är helt tomt, med informationen "1 record(s) affected", och det andra innehåller den information du vill ha. Du kommer ifrån detta genom att överst i din procedur stänga av funktionen som räknar hur många rader som påverkats.

```
CREATE PROCEDURE spLCPFiles_Insert

	@ContactID	INT,
	@OpenDate	DATETIME

AS

[b]SET NOCOUNT ON[/b]

INSERT INTO TblLCPFiles
	(
	ContactID,
	OpenDate
	)

VALUES
	(
	@ContactID,
	@OpenDate
	)

SELECT @@IDENTITY AS NewID
GO
```

Mvh

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

## #7 — SteveP, 2003-08-05T11:47Z

Det gjorde ingen skillnad tyvärr

```
CREATE PROCEDURE spLCPFiles_Insert

	@ContactID	INT,
	@OpenDate	DATETIME

AS

SET NOCOUNT ON

INSERT INTO TblLCPFiles
	(
	ContactID,
	OpenDate
	)

VALUES
	(
	@ContactID,
	@OpenDate
	)

SELECT @@IDENTITY AS NewID
GO
```

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

## #8 — @nders, 2003-08-05T11:54Z

Hmm. Lustigt. Inte för jag vet vad det skulle göra för skillnad, men prova att slänga bort **GO** ur koden. Jag kan inte tro att det skulle behövas.

Mvh

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

## #9 — SteveP, 2003-08-05T12:01Z

Det var en dum miss av mig :)

Jag öppnade inte med ObjRs
Såhär hade jag innan som du ser ovan.

```
ObjConn.Execute(strSQL)
```

Bytte ut det mot 

```
Set ObjRs = ObjConn.Execute(strSQL)
```

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

## #10 — @nders, 2003-08-05T12:03Z

Aha, så allt väl, och kakorna smakar mao?

Mvh

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/83493-fetcha-autoid
