---
title: "Unikt nummer i MS SQL Server"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/164687-unikt-nummer-i-ms-sql-server"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "firstchoice"
published: "2007-09-20T08:26:02.000Z"
updated: "2007-09-22T12:28:06.000Z"
replies: 6
views: 688
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/164687-unikt-nummer-i-ms-sql-server"
---

# Unikt nummer i MS SQL Server

## #1 — firstchoice, 2007-09-20T08:26Z

skall ha en tabell med ett ID nummer (integer) som jag vill att databasen skall generera automatiskt.

vilken datatyp skall jag använda, samt inställningar?

har hittat "timestamp" och "uniqueidentifier", men jag vill ha unikt nummer från typ 1 och framåt...

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

## #2 — pebi, 2007-09-20T08:42Z

IDENTITY heter det jag tror du vill åt.
Då räknas i mitt exempel nedan counterfiled upp med ett vid varje insert.
(och man kan få tillbaka @@indentity om man vid sin insert vill veta vilket värde det blev)

   /pebi 

CREATE TABLE \[dbo\].\[tabellen\]
(
	\[counterfield\] \[int\] IDENTITY(1,1) NOT NULL,

	fler fält.....	

)

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

## #3 — Lasp, 2007-09-20T08:42Z

Du bör kanske starta med fem siffror eller sex beroende på mängden data
Så kan du väl sedan göra increment med 1 på fältet.

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

## #4 — pebi, 2007-09-20T08:58Z

> **Lasp skrev:**
>
> Du bör kanske starta med fem siffror eller sex beroende på mängden data
> Så kan du väl sedan göra increment med 1 på fältet.

Nja, det beror väl på vad du menar. Att själv hålla på och mixtra med increment är väl inte så bra. Det finns ju ingen garanti i sql-server vem som "hiiner först" om flera anrop görs samtidigt.
Om man använder identity så är det såvitt jag vet säkert för multipla samtidiga anrop, alla blir unika och varje anropare kan hämta sitt unika nummer i @@ variablen. 8och funkar det inte så är det microsofts fel ;), det SKA funka så)

  /pebi

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

## #5 — clarkbones, 2007-09-22T07:23Z

pebi, du missförstår LASP. LASP menar nog att man ska sätta seed (startvärdet) till tex 10000. Sedan låter man sql server sköta uppräkningen som du beskrev.

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

## #6 — pebi, 2007-09-22T12:13Z

ja troligen gjorde jag väl det.
Man kan ju sätta vilket startvärde och vilket step som helst.
Men om numret inte skall användas publikt som typ kundnummer finns det ju ingen mening.
Det är ju ett numeriskt fält, INT är ju lika många bitar oavset värde.
Så teroretiskt "klipper man bort möjliga värden" NU kanske man inte fyller en INT iallafall.
Och skall numret användas som kundnummer, medlemsnummer eller så kan det ju vara en fördel att göra så, det kan ju tyckas lite B med kundnummer 3...
Då kan man ju t.om. använda step 7 eller något, så verkar det som om fler tillkommer om två som känner varandra reggar nästan samtidigt....

 /pebi

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

## #7 — Lasp, 2007-09-22T12:28Z

Tack clarkbones för tillrättaläggandet.
Visst var det så jag menade. Att ha samma storhet (storlek) på numren, även om de inte är publika underlättar alltid i ett senare skede om man skall hantera data manuellt.
Det ser dessutom snyggare ut i interna rapporter och dylikt.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/164687-unikt-nummer-i-ms-sql-server
