firstchoiceMedlem sedan okt. 2001605 inlägg
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...
pebiMedlem sedan jan. 2005328 inlägg
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.....
)
LaspMedlem sedan juli 200010 197 inlägg
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.
pebiMedlem sedan jan. 2005328 inlägg
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
clarkbonesMedlem sedan feb. 20012 693 inlägg
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.
pebiMedlem sedan jan. 2005328 inlägg
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
LaspMedlem sedan juli 200010 197 inlägg
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.