2013-07-24 32 views
0

我正在構建將由我的Web API應用程序使用的存儲過程。現在,我有多個數據庫和多個存儲過程,它們將API合約指定的所有數據返回給我。我想要做的是自定義我的SP的方式,他們將只返回我更新的行。例如。我在一個表中有10列,用戶更改了2列,存儲過程檢查哪些列受到影響,並僅返回那些列,而對於所有其他列,它應該返回null。到目前爲止,我正在考慮創建一個新表,它將存儲ProductIdUpdatedFields,因此當觸發更新SP時,它將更新名稱和類別字段,並將這些列名稱存儲在UpdatedFields之下的新表格中,如逗號分隔的字符串(Name,Category ... )並且檢索成員數據SP不會返回PriceQuantity(這些應該爲空),而只是NameCategory僅從數據庫返回更新的字段

任何幫助表示讚賞。

+0

我做了一些與此類似的操作,使用了一個修改在原始表中的(日期時間)字段處。這樣我就可以帶回已在特定時間範圍內更新的字段,而無需額外的表格。不知道這是否也適用於您 –

+0

我們的動機不同,但我們使用標識符,字段更改,更改時間和舊值時將更改記錄到某些表中。你可能不需要舊的價值。但是你想要多個記錄,而不是單個記錄與列表。這通常是一個壞主意。 –

+0

好吧,我有兩個角色。一個是所有者,一個是產品的消費者。我們也有'產品'表。所有者只更改產品的名稱。當消費者調用GET'Product' SP時,返回該產品,但僅在此情況下更改了字段'Name',而其他消息則返回null。 @ DevN00B你能解釋一下這種方法嗎? – jasenkoh

回答

1

你可以用@ DevN00B的建議,確定修改的行,然後用CASE爲每列要麼返回由業主進行的新的價值或NULL

UPDATE將在ModifyDate設置爲GETDATE()的現有記錄然後將改變記錄與NULL ModifyDate

的GET方法則看起來像下面

​​

多個UPDATE s會使事情變得更加複雜,因爲每一次更改都會有一排,通常不會因所有單獨更改而更改所有列

相關問題