Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Usando um gatilho para simular uma segunda coluna de identidade no SQL Server 2005


Apenas uma idéia, se você tiver 2 colunas de "identidade", certamente elas estariam 'em sincronia' - se não exatamente o mesmo valor, difeririam por um valor constante. Em caso afirmativo, por que não adicionar a coluna "segunda identidade" como um COMPUTED coluna , que compensa a identidade primária? Ou minha lógica é falha aqui?

Edit:De acordo com o comentário de Martin, observe que seu cálculo pode precisar ser N * id + C, onde N é o incremento e C o deslocamento / delta - desculpe minha matemática enferrujada.

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

Editar Observe que para o Sql 2012 e posterior, agora você pode usar uma sequência independente para criar duas ou mais colunas de incremento independente na mesma tabela.

Observação :OP editou o requisito original para incluir sequências de recuperação (observando que as colunas de identidade no SQL não recuperam os IDs usados ​​uma vez excluídos).