12 Stimmen

Wie kann man in der SQL Server-Datenbank zwei Spalten als automatisch inkrementierende ganze Zahlen mit einem Inkrement-Samen von 100 einstellen?

Wie kann man in der SQL Server-Datenbank zwei Spalten als automatisch inkrementierende ganze Zahl mit einer Zuwachsgröße von 100 einstellen?

15voto

StuartLC Punkte 99976

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
);

Beispiel für eine Sequenz hier in SqlFiddle

2voto

Andomar Punkte 224164

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)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X