Autonumrering
AutoNumber är en typ av data som används i Microsoft Access- tabeller för att generera en automatiskt inkrementerad numerisk räknare. Den kan användas för att skapa en identitetskolumn som unikt identifierar varje post i en tabell. Endast ett autonummer är tillåtet i varje tabell.
Datatypen kallades Counter i Access 2.0.
Blanketter
Det finns tre former där autonumrering kan genereras:
- startvärde plus inkrement
- AutoNumbers som genereras av denna mekanism börjar med startnumret och ökar med inkrementvärdet, och kontrollerar om det finns kollision med befintliga tabellrader.
- slumpmässiga
- AutoNumbers som genereras av denna mekanism tilldelas med hjälp av en pseudoslumptalsgenerator som genererar långa heltal och kontrollerar om det finns kollisioner med befintliga tabellrader.
- replikerings-ID:n
- Autonumrering som genereras av denna mekanism är ID:n som genereras på ett sätt som gör det mycket osannolikt att kollisioner kommer att inträffa. De är Microsoft Globally Unique Identifiers och sannolikheten för kollision är låg fram till år 3400 e.Kr.
Standardstorleken för en AutoNumber är ett 4-byte (långt) heltal. Detta är storleken som används för start+ökning och slumpmässiga AutoNumbers. För AutoNumbers för replikerings-ID ändras egenskapen FieldSize för fältet från långt heltal till
replikerings-ID
.
Om ett AutoNumber är ett långt heltal, bestämmer egenskapen NewValues
om den är av start+inkrement eller slumpmässig form. Värdena som den här egenskapen kan ta är "Inkrement" och "Slumpmässig".
Använda sig av
Standardtypen AutoNumber är en start+ökningsräknare, med ett startvärde på 1 och ett steg på 1. Även om ett sådant AutoNumber-fält i många fall kommer att visas som om det innehåller radantalet, gör det inte det. Radering av rader från en tabell gör till exempel inte att AutoNumber-fält numreras om, utan lämnar istället "hål" i numreringen. På liknande sätt, om en transaktion för att lägga till en rad i en tabell påbörjas men senare avbryts, kommer autonumret som tilldelats för den raden inte att återanvändas.
Standardformen för start+ökning med startvärdet 1 och ökningen 1 är inte lämplig för alla omständigheter. Det finns skäl att välja varje form, och avvägningar med att göra det.
Standardvärdena för start och ökning kan avslöja information om en tabell som man inte vill avslöja för personer som tittar på enskilda tabellrader. Att till exempel använda ett AutoNumber-fält för ett kund-ID kan avslöja information som det är önskvärt att inte avslöja för exempelvis kundnummer 6. Detta är ett exempel på tillfällen där startvärdet för ett AutoNumber-fält höjs, så att kundnumret 6 har till exempel AutoNumber-fältvärdet 10006.
Att använda slumpmässiga värden är önskvärt i fall där det skulle vara olyckligt om det var möjligt att gissa nästa värden som tilldelas nya rader i tabellen. Denna användning är dock sällsynt.
Ett vanligt problem med AutoNumber-fält uppstår om tabeller replikeras. Om flera användare använder flera repliker av tabellen är det troligt att de kommer att tilldela samma värden till AutoNumber-fält i nya rader som de lägger till, vilket orsakar replikeringskonflikter när replikerna slås samman.
Detta problem åtgärdas på två sätt. För det första är det möjligt att använda replikerings-ID:n för sådana AutoNumbers. Sådana replikerings-ID:n, som är GUID:n, kommer att vara unika för repliker, med låg sannolikhet för kollision. För det andra, när Access skapar tabellrepliker, ändrar den automatiskt AutoNumbers för start+inkrementformen till den slumpmässiga formen.
Manipulering av räknare med DDL
Följande DDL-fråga ( Data Definition Language) skapar ett AutoNumber-fält med ett startvärde och ett inkrement:
SKAPA TABELL Tabell1 ( Fält1 COUNTER ([ början_nummer ], [ inkrement_nummer ]), [...] );
Denna fråga återställer räknaren:
ALTER TABLE Tabell1 ALTER COLUMN Fält1 COUNTER ( begynnelsenummer , inkrement_nummer );
En alternativ metod för att nollställa räknaren är att släppa kolumnen och lägga till den igen (detta har bieffekten av att omnumrera befintliga rader i tabellen):
ÄNDRA TABELL Tabell1 SLÄPP KOLUMN Fält1 ; ALTER TABELL Tabell1 ADD Fält1 RÄKNERE ;
- ^ Prag, Cary & Michael Irwin. Access 2002 Bibeln . New York: Wiley Publishing, Inc. sid. 109.
- ^ a b c d e f g h i j k Chris Grover; Matthew MacDonald & Emily A. Vander Veer (2007). Office 2007: The Missing Manual . O'Reilly. s. 636–638. ISBN 9780596514228 .
- ^ a b Microsoft (2006-01-09). "KBID 170117: Hur man använder GUID-fält i Access från Visual C++" . Microsoft KnowledgeBase . Microsoft.
- ^ a b Microsoft (2009). "Microsoft Access Visual Basic-referens: NewValues Property" . MSDN . Microsoft . Hämtad 2009-07-05 .
Vidare läsning
- Microsoft (2009). ".NET Framework Developer's Guide: Retrieving Identity or Autonumber Values" . MSDN . Microsoft . Hämtad 2009-07-05 .