Jump to content

Identity column

From Wikipedia, the free encyclopedia

This is an old revision of this page, as edited by RCTodd (talk | contribs) at 13:49, 8 February 2018. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

An identity column is a column (also known as a field) in a database table that is made up of values generated by the database. This is much like an AutoNumber field in Microsoft Access or a sequence in Oracle. Because the concept is so important in database science, many RDBMS systems implement some type of generated key, although each has its own terminology.

An identity column differs from a primary key in that its values are managed by the server and usually cannot be modified. In many cases an identity column is used as a primary key; however, this is not always the case.

It is a common misconception that an identity column will enforce uniqueness; however, this is not the case. If you want to enforce uniqueness on the column you must include the appropriate constraint too.

In Microsoft SQL Server you have options for both the seed (starting value) and the increment. By default the seed and increment are both 1.

Code Samples

Create Table Contacts (
   FirstName varChar(30),
   LastName  varChar(30),
   Phone     varChar(16),
   ContactID int identity(1, 1)
)

or

Create Table Contacts (
   FirstName varChar(30),
   LastName  varChar(30),
   Phone     varChar(16)
)
GO
Alter Table Contacts Add ContactID int identity(1, 1)

Related Functions

It is often useful or necessary to know what identity value was generated by an INSERT command. Microsoft SQL Server provides several functions to do this: @@IDENTITY provides the last value generated on the current connection in the current scope, while IDENT_CURRENT(tablename) provides the last value generated, regardless of the connection or scope it was created on.

Example:

   Insert Into Contacts ( FirstName, LastName ) Values ( 'Test', 'User' )
   --
   Select @@Identity
   -- OR --
   Declare @ID int
   Select @ID = @@Identity
   Update Contacts Set Phone = 'XXX-YYY-ZZZZ' Where ContactID = @ID

See also

External links