Kolumnen Identitet

En identitetskolumn är en kolumn (även känd som ett fält ) i en databastabell som består av värden som genereras av databasen . Detta är ungefär som ett AutoNumber- fält i Microsoft Access eller en sekvens i Oracle . Eftersom konceptet är så viktigt inom databasvetenskap implementerar många RDBMS- system någon typ av genererad nyckel, även om var och en har sin egen terminologi . Idag är en populär teknik för att skapa identitet att generera ett slumpmässigt UUID.

En identitetskolumn skiljer sig från en primärnyckel genom att dess värden hanteras av servern och vanligtvis inte kan ändras. I många fall används en identitetskolumn som primärnyckel; detta är dock inte alltid fallet.

Det är en vanlig missuppfattning att en identitetskolumn kommer att framtvinga unikhet; så är dock inte fallet. Om du vill framtvinga unikhet i kolumnen måste du också inkludera lämplig begränsning.

I Microsoft SQL Server har du alternativ för både seed (startvärde) och inkrement. Som standard är både fröet och ökningen 1.

Kodprover

   
    
      Skapa  tabellkontakter  (  FirstName  varChar  (  30  ),  Efternamn  varChar  (  30  ),  Telefon  varChar  (  16  )  ,  ContactID  int  identity  (  1  ,  1  )  ) 
        
      

eller

   
    
     
        


        Skapa  tabellkontakter  (  FirstName  varChar  (  30  ),  Efternamn  varChar  (  30  )  ,  Telefon  varChar  (  16  )  )  Ändra  tabellkontakter  Lägg  till  ContactID  int  identitet  (  1  ,  1  ) 

I Postgres

  

         CREATE  TABLE-  kontakt  (  contact_uuid  UUID  PRIMÄRKEY  DEFAULT  gen_random_uuid  (),  first_name  varchar  ,  last_name  varchar  ,  phone  varchar  )  ;  
     
     
      

Relaterade funktioner

Det är ofta användbart eller nödvändigt att veta vilket identitetsvärde som genererades av ett INSERT -kommando. Microsoft SQL Server tillhandahåller flera funktioner för att göra detta: @@IDENTITY tillhandahåller det senaste värdet som genererades på den aktuella anslutningen i det aktuella omfånget, medan IDENT_CURRENT( tabellnamn ) tillhandahåller det senast genererade värdet, oavsett vilken anslutning eller omfattning den skapades på.

Exempel:

              
   
    
     
     
      
             Infoga  i  kontakter  (  FirstName  ,  LastName  )  Värden  (  'Test'  ,  'User'  )  --  Välj  @@Identity  --  ELLER  --  Deklarera  @ID  int  Välj  @ID  =  @@Identity  Update  Contacts  Set  Phone  =  'XXX-YYY- ZZZZ'  Där  ContactID  =  @ID 

Se även

externa länkar