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 ) ) GÅ Ä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