Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Utilizzo di un trigger per simulare una seconda colonna Identity in SQL Server 2005

Solo un'idea, se hai 2 colonne "identità", sicuramente sarebbero "sincronizzate" - se non esattamente lo stesso valore, differirebbero di un valore costante. In tal caso, perché non aggiungere la colonna "seconda identità" come COMPUTED colonna , che compensa l'identità primaria? O la mia logica è sbagliata qui?

Modifica:come da commento di Martin, nota che il tuo calcolo potrebbe dover essere N * id + C, dove N è l'incremento e C l'offset / delta - scusa i miei calcoli arrugginiti.

Ad esempio:

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

Modifica Tieni presente che per Sql 2012 e versioni successive, ora puoi utilizzare una sequenza indipendente per creare due o più colonne a incremento indipendente nella stessa tabella.

Nota :OP ha modificato il requisito originale per includere le sequenze di recupero (notando che le colonne di identità in SQL non recuperano gli ID usati una volta eliminati).