Stworzyłem tabelę historii produktów, dla której chcę automatycznie zwiększyć VersionId
podzieloną na partycje przez ItemId
.Czy można podać pod-sekwencję dla tabeli?
ID ItemId VersionId ItemContent Created 1 1 1 fooo 2015-02-24 12:54:00.11 2 2 1 barr 2015-02-24 12:54:15.35 3 1 2 foo 2015-02-24 12:55:00.61 4 1 3 baz 2015-02-24 12:55:45.23 5 2 2 bar 2015-02-24 12:56:00.03
Obecnie ustawiono VersionId
w wyzwalaczu. Co chciałbym znaleźć coś takiego (wiem, to w rzeczywistości nie działa):
create table ItemHistory
(
Id int identity(1,1) not null primary key
,ItemId int not null references Item(Id)
,VersionId int not null default row_number() over (partition by ItemId order by Id)
,ItemContent varchar(max)
,Created datetime not null default getdate()
)
Chociaż mam roztwór roboczy, chciałbym wiedzieć, czy jestem brakuje niektórych wbudowanych -w funkcji obsługi tego przypadku.
Więc mówisz, że podczas pisania wiersza do tabeli będzie określać ItemId i chcesz, aby identyfikator VersionId był ustawiony automatycznie na podstawie wierszy już w tabeli? – Elliveny
@ Elliveny Tak, zgadza się. –
Myślę, że wyzwalacz jest tutaj. Nie znam lepszego rozwiązania. Rozważmy pytanie, chciałbym zobaczyć, czy ktoś coś wymyśli! – Elliveny