2
我有一個巨大的數據表(200多萬條記錄),它存儲了我們使用Money數據類型的現金金額。我需要將此字段的精度提高到8位左右的小數點。增加鉅額表的金錢場的精度
現在我可以簡單地去
ALTER TABLE CashTable ALTER COLUMN Cash decimal(23,8) null
我想知道,但如果任何人有這將如何執行的想法,以及是否存在數據丟失的風險。
感謝
我有一個巨大的數據表(200多萬條記錄),它存儲了我們使用Money數據類型的現金金額。我需要將此字段的精度提高到8位左右的小數點。增加鉅額表的金錢場的精度
現在我可以簡單地去
ALTER TABLE CashTable ALTER COLUMN Cash decimal(23,8) null
我想知道,但如果任何人有這將如何執行的想法,以及是否存在數據丟失的風險。
感謝
在幕後,所以如果你需要,以保持鎖定開銷下來,如果以減少交易規模要做到這一點作爲一個在線操作,這將新的固定長度列添加到每一行我你是我,只是明確地做到這一點。
ALTER TABLE CashTable ADD COLUMN Cash2 decimal(23,8) null
然後添加一個INSERT
和UPDATE
觸發保持與Cash
列同步的更新和新列的批次。
當整個表同步時,放下原始列並重命名新列。希望你沒有任何代碼依賴於列順序。
沒有數據丟失的風險,因爲這可以應付範圍money
罰款(-922,337,203,685,477.5808
到922,337,203,685,477.5807
)。
您是否需要在線執行此操作,或者您是否有維護窗口可以執行此操作?數據庫的恢復模式是什麼? – 2012-02-08 12:23:10