2011-01-06 12 views

Antwort

13

Sie können nur eine Identitätsspalte pro Tabelle haben, jedoch gibt es einige Ideen und Umgehungen here

Simulation einer abgeleiteten Computed Spalte

Wenn beide „Identität“ Spalten miteinander synchronisiert sind, oder die zweite Identität kann von der ersten unter Verwendung einer Formel abgeleitet werden, dann könnte eine berechnete Spalte anwendbar sein, z wenn die zweiten identity durch eine Konstante von der tatsächlichen Identität Spalte versetzt ist:

ALTER TABLE MyTable ADD OtherIdentity AS RealIdentity + 100; 

Wo RealIdentity sind die tatsächlichen/Original IDENTITY Spalt.

Computed Column derived off Identity SqlFiddle example here

eine unabhängige Folge Mit

Eine weitere Alternative wäre ein independent Sequence (Sql2012 and Later)

CREATE SEQUENCE MySequence START WITH 100; 

CREATE TABLE MyTable 
(
    RealIdentity INT IDENTITY(1,1), 
    RandomCol NVARCHAR(100), 
    FakeIdentity INT DEFAULT NEXT VALUE FOR MySequence 
); 

Sequence SqlFiddle example here

2

zu verwenden Wie nonnb sagt, können Sie nur eine Spalte markiert haben als Identität. Wenn jedoch eine mathematische Beziehung zwischen den beiden Identitätsspalten besteht, können Sie eine berechnete Spalte verwenden. Zum Beispiel, wenn die zweiten id ist gleich die ersten id plus 500, könnten Sie verwenden:

create table t1 (id1 int identity(1,100), id2 as id1 + 500)