2012-02-08 37 views
2

我有一個巨大的數據表(200多萬條記錄),它存儲了我們使用Money數據類型的現金金額。我需要將此字段的精度提高到8位左右的小數點。增加鉅額表的金錢場的精度

現在我可以簡單地去

ALTER TABLE CashTable ALTER COLUMN Cash decimal(23,8) null 

我想知道,但如果任何人有這將如何執行的想法,以及是否存在數據丟失的風險。

感謝

+0

您是否需要在線執行此操作,或者您是否有維護窗口可以執行此操作?數據庫的恢復模式是什麼? – 2012-02-08 12:23:10

回答

1

在幕後,所以如果你需要,以保持鎖定開銷下來,如果以減少交易規模要做到這一點作爲一個在線操作,這將新的固定長度列添加到每一行我你是我,只是明確地做到這一點。

ALTER TABLE CashTable ADD COLUMN Cash2 decimal(23,8) null 

然後添加一個INSERTUPDATE觸發保持與Cash列同步的更新和新列的批次。

當整個表同步時,放下原始列並重命名新列。希望你沒有任何代碼依賴於列順序。

沒有數據丟失的風險,因爲這可以應付範圍money罰款(-922,337,203,685,477.5808922,337,203,685,477.5807)。