Wie kann man in der SQL Server-Datenbank zwei Spalten als automatisch inkrementierende ganze Zahl mit einer Zuwachsgröße von 100 einstellen?
Antworten
Zu viele Anzeigen?Sie können pro Tabelle nur eine Identitätsspalte haben, aber es gibt einige Ideen und Workarounds hier
Simulation unter Verwendung einer abgeleiteten berechneten Spalte
Wenn beide "IDENTITY"-Spalten miteinander synchronisiert sind oder die zweite Identität aus der ersten mithilfe einer Formel abgeleitet werden kann, ist möglicherweise eine berechnete Spalte anwendbar, z. B. wenn die zweite IDENTITY
-Spalte um einen konstanten Wert vom tatsächlichen Identitätsspalte verschoben ist:
ALTER TABLE MyTable ADD OtherIdentity AS RealIdentity + 100;
Wo RealIdentity
die tatsächliche / originale IDENTITY
-Spalte ist.
Beispiel für eine aus der Identität abgeleitete berechnete Spalte hier in SqlFiddle
Verwendung einer unabhängigen Sequenz
Eine weitere Alternative wäre die Verwendung einer unabhängigen Sequenz (Sql2012 und später)
CREATE SEQUENCE MySequence START WITH 100;
CREATE TABLE MyTable
(
RealIdentity INT IDENTITY(1,1),
RandomCol NVARCHAR(100),
FakeIdentity INT DEFAULT NEXT VALUE FOR MySequence
);
Wie nonnb sagt, kann nur eine Spalte als Identität markiert werden. Wenn jedoch eine mathematische Beziehung zwischen den beiden Identitätsspalten besteht, können Sie eine berechnete Spalte verwenden. Zum Beispiel, wenn das zweite id
gleich dem ersten id
plus 500 ist, könnten Sie folgendes verwenden:
create table t1 (id1 int identity(1,100), id2 as id1 + 500)