web-dev-qa-db-fra.com

Est-il recommandé d'utiliser Identity comme alternative à la clé primaire?

Nous pouvons déclarer un Identity comme id_num pour que id_num aura un incrément de nombres uniques.

CREATE TABLE new_employees
(
  id_num int IDENTITY(1,1),
  fname varchar (20),
  minit char(1),
  lname varchar(30)
)

Est-il recommandé d'utiliser Identity comme alternative à Primary key puisque Identity a fourni un numéro unique pour chaque ligne?

11
Jack

Identity columns et Primary Keys sont deux choses très distinctes. Une Identity column fournit un nombre à incrémentation automatique. C'est tout. Le Primary Key (au moins dans SQL Server) est une contrainte unique qui garantit l'unicité et est généralement (mais pas toujours) la clé en cluster. Encore une fois dans MS SQL Server, il s'agit également d'un index (dans certains SGBDR, ils ne sont pas aussi étroitement liés). En tant qu'index, il fournit des recherches plus rapides, etc. Fréquemment Identity columns sont utilisés comme Primary Key si pas bon natural key existe, mais n'est pas un substitut.

23
Kenneth Fisher

Non, ce n'est pas le cas, car l'identité ne pas garantit une valeur unique. La propriété d'identité peut être contournée avec SET IDENTITY_INSERT <schema>.<table> ON (dans SQL Server - vous n'avez pas spécifié le SGBDR que vous utilisez).

Une contrainte de clé primaire (et une contrainte unique) utilise un index unique pour appliquer l'unicité.

5
Greenstone Walker