SQL Server Computed Column 由運算式自動計算(如 Rate * Duration),不可直接 INSERT/UPDATE。使用 Ad-hoc SQL 的 TableAdapter 會自動在 INSERT/UPDATE 陳述式包含 Computed Column 導致錯誤。解決方案:TableAdapter 改用 Stored Procedure。
Suppliers → Design。FullContactName,資料型別自動顯示為 computed。ContactName + ' (' + CASE WHEN ContactTitle IS NOT NULL
THEN ContactTitle + ', ' ELSE '' END + CompanyName + ')'
儲存後自動調整為:((([ContactName]+' (')+case when [ContactTitle] IS NOT NULL then [ContactTitle]+', ' else '' end)+[CompanyName])+')')
| Ad-hoc SQL TableAdapter | Stored Procedure TableAdapter |
|---|---|
| 精靈自動產生 INSERT/UPDATE 包含所有 Select 欄位 | SP 由開發者手寫,完全控制欄位清單 |
| Computed Column 會被錯誤包含在 INSERT/UPDATE | SP 直接略過 Computed Column,零衝突 |
| 重新執行精靈會覆蓋手動修正 | SP 獨立維護,不受精靈影響 |
Computed Column 是資料庫層級計算欄位的優雅實作。搭配 Stored Procedure TableAdapter,完美解決自動產生代碼衝突問題,兼顧效能與維護性。