Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Verwenden eines Triggers zum Simulieren einer zweiten Identitätsspalte in SQL Server 2005

Nur eine Idee, wenn Sie 2 "Identitäts" -Spalten haben, dann wären sie sicherlich "synchron" - wenn nicht genau der gleiche Wert, dann würden sie sich durch einen konstanten Wert unterscheiden. Wenn ja, warum fügen Sie dann nicht die Spalte „zweite Identität“ als BERECHNET Spalte , die die primäre Identität ausgleicht? Oder ist meine Logik hier fehlerhaft?

Bearbeiten:Beachten Sie gemäß Martins Kommentar, dass Ihre Berechnung möglicherweise N * id + C sein muss, wobei N das Inkrement und C das Offset / Delta ist - entschuldigen Sie meine eingerosteten Mathematik.

Zum Beispiel:

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

Bearbeiten Beachten Sie, dass Sie für SQL 2012 und höher jetzt eine unabhängige Sequenz verwenden können um zwei oder mehr unabhängig inkrementierende Spalten in derselben Tabelle zu erstellen.

Hinweis :OP hat die ursprüngliche Anforderung bearbeitet, um zurückfordernde Sequenzen einzuschließen (unter Hinweis darauf, dass Identitätsspalten in SQL keine verwendeten IDs zurückfordern, sobald sie gelöscht wurden).