2011-01-06 9 views

Odpowiedz

13

Można mieć tylko jedną kolumnę tożsamości za stołem, jednak istnieją pewne idee i sposoby ich obejścia here

Symulacja przy użyciu pochodnej wyliczona Kolumna

Jeśli obie kolumny „identyczność” są zsynchronizowane ze sobą lub druga tożsamość może być wyprowadzona z pierwszego przy użyciu formuły, wówczas może być zastosowana kolumna obliczona, np jeśli drugi identity jest równoważone przez stałą od rzeczywistego kolumnie Identity:

ALTER TABLE MyTable ADD OtherIdentity AS RealIdentity + 100; 

Gdzie RealIdentity jest rzeczywista/oryginalna IDENTITY kolumna.

Computed Column derived off Identity SqlFiddle example here

Korzystanie sekwencję niezależną

Inną alternatywą byłoby użyć 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

Jak nonnb mówi, można mieć jedną kolumnę oznaczoną tylko jako tożsamość. Jeśli jednak istnieje relacja matematyczna między dwiema kolumnami tożsamości, można użyć kolumny obliczeniowej. Na przykład, jeśli w drugim id jest równa pierwszej id powiększonej 500, można użyć:

create table t1 (id1 int identity(1,100), id2 as id1 + 500) 
Powiązane problemy