sql >> Base de Datos >  >> RDS >> Sqlserver

Uso de un disparador para simular una segunda columna de identidad en SQL Server 2005

Solo una idea, si tiene 2 columnas de "identidad", entonces seguramente estarían 'sincronizadas'; si no tienen exactamente el mismo valor, diferirían en un valor constante. Si es así, ¿por qué no agregar la columna "segunda identidad" como CALCUTADO columna , que compensa la identidad primaria? ¿O mi lógica es defectuosa aquí?

Editar:según el comentario de Martin, tenga en cuenta que es posible que su cálculo deba ser N * id + C, donde N es el Incremento y C el desplazamiento / delta; disculpe mis matemáticas oxidadas.

Por ejemplo:

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

Editar Tenga en cuenta que para Sql 2012 y versiones posteriores, ahora puede usar una secuencia independiente para crear dos o más columnas que se incrementan de forma independiente en la misma tabla.

Nota :OP ha editado el requisito original para incluir secuencias de recuperación (observando que las columnas de identidad en SQL no recuperan las ID usadas una vez eliminadas).