2010-12-09 95 views
0

我必須通過一個數據庫並根據邏輯進行修改。問題看起來像這樣。我在我的數據庫中有一個歷史記錄表,我必須修改。 在修改任何東西之前,我必須查看一個對象(在歷史表中有多行)是否有一個特定的狀態,比如4或9.如果狀態爲4或9,那麼我必須檢查當前找到的行行和下一個狀態4或9行。如果這樣的行(在這些狀態之間)在特定列中具有特定值,那麼我在下一行中執行一些操作。我希望這很簡單,給你一個想法。我必須檢查所有對象。請記住,任何對象都可以在其生命週期的任何地方進行修改(當然,直到達到最終狀態)。高級數據庫修改「腳本」 - 如何做到這一點

我正在使用SQL Sever 2005和Hibernate。 AFAIK我不能在Transact SQL中做這樣複雜的檢查!那麼你會推薦我做什麼?到目前爲止,我一直在考慮將其作爲JUnit測試。這樣做的好處是讓Hibernate能夠幫助我做修改,並且我將擁有用於列表和其他可能需要且不存在於SQL中的數據結構的Java。如果我將它作爲JUnit測試來做,我不會丟失我的映射文件! 我很好奇你會用什麼方法?

回答

0

我認爲你應該可以使用遊標來管理SQL Server中複雜的檢查。你沒有提到你需要這麼做的頻率,但如果這是一次性事情,你可以在Java或SQL Server中完成,具體取決於你的舒適程度。

如果需要對每個CRUD操作應用此檢查,那麼可能需要數據庫觸發器。如果邏輯在一段時間內可能會頻繁更改,那麼我寧願在Hibernate中編寫檢查,假設沒有人會直接訪問數據庫。

+0

我可以在SQL中有列表嗎?我的意思是我可以存儲我的對象id的例子? – Atticus 2010-12-09 16:33:14