2015-02-24 22 views
5

ItemId tarafından bölümlere ayrılan VersionId değerini otomatik olarak artırmak istediğim bir öğe geçmişi tablosu oluşturdum. Şu Tablo için bir alt sıra belirtebilir misiniz?

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

, o VersionId bir tetikleyici ayarlanır. Bazı inşa özlüyorum eğer

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

Ben çalışan bir solüsyon sahipken, İsterdim bilmek: böyle bir şey (Ben bu aslında çalışmıyor biliyorum) Ne bulmak istiyoruz olduğu Bu durumu ele almak için -in işlevselliği. Sadece bir bakış açısıyla bunu niye cevap

olarak yorumumu kullanmak istediğiniz durumda

+0

Tabloda bir satır yazdığınızda, ItemId'yi belirttiğiniz ve VersionId'nin tablodaki satırlara göre otomatik olarak ayarlanmasını istediğinizi söylüyorsunuz? – Elliveny

+0

@Elliveny Evet, doğru. –

+0

Burada bir tetikleyici bir cevap olduğunu düşünüyorum. Daha iyi bir çözümün farkında değilim. Bu soru üzerine, kimsenin bir şey bulup getirmediğini görmek istiyorum! – Elliveny

cevap

2

? Bir görünümde row_number() olabilir.

ItemId'de bir dizinle, ID çok hızlı olmalıdır.
Tetikleyiciden muhtemelen daha az havai.

Sadece okuduğunuz bir yorumu eklediniz. Görüş için daha fazla sebep.

+0

Tetikleyiciden kesinlikle daha iyi olsa da, sanırım bazı yeni ateşli sıcaklıklar için umuyordum, yani: bir varsayılan kısıtlama olarak bölümlenmiş bir sequenece. – canon

+1

A FK iden, her FK için sekanslar tatlı olacaktır. – Paparazzi

+0

Katılıyorum .. yeni fangled hotness gerekli olabilir. Bölümlenmiş diziler şaşırtıcı geliyor. – whardier

İlgili konular