Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Utilisation d'un déclencheur pour simuler une deuxième colonne d'identité dans SQL Server 2005

Juste une idée, si vous avez 2 colonnes "d'identité", alors elles seraient sûrement "synchronisées" - si ce n'est pas exactement la même valeur, elles différeraient d'une valeur constante. Si tel est le cas, pourquoi ne pas ajouter la colonne "seconde identité" en tant que COMPUTED colonne , qui compense l'identité primaire ? Ou est-ce que ma logique est défectueuse ici ?

Edit :selon le commentaire de Martin, notez que votre calcul pourrait devoir être N * id + C, où N est l'incrément et C le décalage / delta - excusez mes calculs rouillés.

Par exemple :

ALTER TABLE MyTable ADD OtherIdentity AS Id * 2 + 1;

Modifier Notez que pour Sql 2012 et versions ultérieures, vous pouvez désormais utiliser une séquence indépendante pour créer deux ou plusieurs colonnes incrémentées indépendamment dans la même table.

Remarque  :OP a modifié l'exigence d'origine pour inclure les séquences de récupération (en notant que les colonnes d'identité dans SQL ne récupèrent pas les identifiants utilisés une fois supprimés).