2012-11-29 39 views
1

我有一張表,我想添加計算列(每個用戶的值不同 - 權限需要)。
問題是此表是Microsoft Dynamics NAV的一部分,它不知道計算列的任何內容。
我已經管理如何作弊NAV,以便在NAV創建它之後更改列類型,並且我可以讀取數據。

現在我卡在插入。
NAV不使用可爲空的列,因此它總是嘗試插入默認值,並且SQL Server在計算列上失敗並出現錯誤。
我試着寫INSTEAD OF INSERT觸發器,但似乎SQL Server在運行觸發器之前正在執行檢查,但仍然失敗並顯示錯誤。
如何強制sql server忽略插入計算列而不是拋出錯誤?

有沒有辦法強制SQL Server忽略計算列上的插入值?

回答

2

我個人不會更改第三方應用程序的模式,特別是金融系統。如果需要,您甚至可以在另一個數據庫中創建它們,而不是更改表格 - 包括計算列定義,然後在視圖上放置INSTEAD OF觸發器,並在視圖中放置INSERT

+0

首先你說不要改變,那麼你說創建視圖 - 但你可能不知道重新綁定某種形式來查看意味着對其他開發人員/顧問的更大的變化和混亂。此外,我還沒有管理如何實現良好的性能與意見 - 不知何故,他們在NAV連接形式時要慢得多。 所以現在我的選擇不是我的選擇:-( – SeeR

+0

「改變」我的意思是在表中添加一列,這是您的原始想法。修改由另一個應用程序管理的表的結構是有風險的,原因很明顯,這就是爲什麼我建議添加視圖,這將是全新的對象,因此更安全;將它們放入第二個數據庫並使用3部分命名(從NAV.dbo.SomeTable中選擇「foo」)意味着您不必觸摸NAV數據庫。 – Pondlife