2014-01-28 37 views
0

我在創建計數在給定的週記錄多少次更新報告的過程。如何保持轉換領域的更新命令語句由同一個更新命令語句被改寫?

聽起來很容易,對不對?讓我在應對這一挑戰方面投入一些複雜性。

我面臨的挑戰是我使用的日期範圍依賴於另一個字段,如果更新,它會在日期範圍字段中完全拋出報告。我會盡量保持這個儘可能簡單,用下面的例子:

所以我有一個表

book.book_keeping_2014 

在此表有以下欄目:

record_number - Automatically generated by a SEQUENCE command 
amount 
record_name 
record_updated 

中的記錄數據庫已經存在,理想情況下只更新一次。

記錄名稱具有特定格式,其中日期先於文件信息的其餘部分。樣本文件名應該是:

20140106-blah-blah-blah-blah.txt 

因此,這裏是我已爲更新命令定義:

UPDATE book.book_keeping_2014 SET [amount] = @amount, 
record_name = @record_name, record_updated = LEFT(record_name,8) 
WHERE [record_number] = @record_number 

所以在record_name場此條 -

20140106-blah-blah-blah-blah(etc).txt 

將進入record_updated字段爲:

20140106 

因爲它的代碼工作正常。但是,record_name列中的給定單元格可能需要更新的時間可能很奇怪。根據上面的UpdateCommand,如果record_name字段得到更新,那麼record_updated字段。

我面臨的挑戰是如果我爲1月份的第一週創建一份每週報告,然後在1月份的第4周更新記錄,這將會拋出一個報告。每月報告也一樣。

我的問題是我怎樣才能防止/重新編寫我的更新語句,以便當LEFT命令第一次拉動正確的信息時它不會被覆蓋?

我對日期轉換場景也有類似的挑戰,但我可能只是把它放在一個不同的問題中。

回答

1

如果你可以改變你的表的結構,那麼您可以HasUpdated添加一個標誌。然後在您的查詢,只更新行時,HasUpdated = 0

+0

你的意思是加入一個名爲「HasUpdated」或者這是系統設置欄? –

+1

向表中添加一個位列。它可以通過一個觸發每當該行被更新,將列更改爲1或在'UPDATE'報表進行管理維護。 – TTeeple