2016-03-22 12 views
0

İki tablo var güncelleyin. Varolan bazı dataRecord'da (hemen hemen her) güncelleme yapıldığında DataRecord tablosunda (dataRecordID 'id1' zaten var) - varolan dataRecord (id: 'id1' version: 0) DataRecordArchive tablosuna eklenir ve dataRecord güncellenir ve Sürüm 1 olarak değişir (ve sürüm 2, 3 vb. gibi). Böylece tablo DataRecordArchive tablosundaki sonuçta kayıt id: ID1 've sürüm: 0 ve DataRecord tablosunda kayıt id: ID1' ve sürüm: 1 ilekriterlere göre iki tablolardan birinin kaydını nasıl seçilir, o zaman

Bazıları ile dataRecord güncellemem gerekiyor değer (bool değeri - satırın DataRecordArchive tablosuna çoğaltılmasına gerek yoktur - örneğin 'correctFlag'), AMA ID ve sürümüm olduğu için hangi tabloyu güncellemem gerektiğini seçmem gerekir, bu nedenle güncelleme kaydı DataRecord tablosunda olabilir veya DataRecordArchive tablosunda. Örneğin, dataRecord'ı id1 sürüm 0 ile güncellemem gerekirse - kayıt DataRecordArchive tablosundadır. DataRecord'ı id1 sürüm 1 ile güncellemem gerekirse, kayıt DataRecord tablosundadır.

şey gibi:

güncelleme durum olduğunda DataRecord seçin sayımı () nerede id = 'id1' ve sürümü => 0 0 ardından DataRecord zaman DataRecordArchive seçin sayımı () nerede id = ' id1' ve sürüm => 0 0 ardından DataRecordArchive uç seti correctFlag = 1 burada id = 'id1' ve sürümü = 0

bu güncelleştirme için doğru SQL statment nedir?

+0

Dinamik SQL istediğim kadar zarif değildir. Bunu yapmanın tek yolu buysa, yapacağım. –

cevap

1

İki tabloyu birleştiren bir görünüm oluşturun. Görünümü güncelleyin.

1

Yorum yapamıyorum, bu nedenle yanıt olarak gönderilecektir. İdeal olarak, doğru bir şekilde önermek için masa yapınıza, tablolarınızdan örnek verilere ihtiyacımız olacaktır. Ancak, sınırlı bilgiye dayanarak dinamik sql kullanmayı öneriyorum. Koşullara bağlı olarak sql sorgunuzun hata maddelerini değiştirmek için dinamik sql'yi kullanacaksınız.

Lütfen tablo strucgture ve örnek verileri gönderin, böylece kullanmak için tam olarak sorgu verebiliriz.

0

Bir SP oluşturmanız gerekir. Bu SP'de verilerinizi geçirebilir ve daha sonra tabloları güncelleyebileceğiniz sürüme göre verileri kontrol edebilirsiniz. Örneğin

:

create procedure update_data 

@version @int, 
@id int, 

As 

if @version == 1 
-- update in table1 
else 
-- update in table2 

GO 
İlgili konular