首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 2.0 資料教程 71:Computed Column 處理策略-資料庫定義、TableAdapter 使用 Stored Procedure 避免自動產生 INSERT/UPDATE 衝突

     編輯:關於ASP.NET

前言

SQL Server Computed Column 由運算式自動計算(如 Rate * Duration),不可直接 INSERT/UPDATE。使用 Ad-hoc SQL 的 TableAdapter 會自動在 INSERT/UPDATE 陳述式包含 Computed Column 導致錯誤。解決方案:TableAdapter 改用 Stored Procedure。

步驟 1:在 Suppliers 資料表新增 Computed Column

  1. SSMS → 右鍵 Suppliers → Design。
  2. 新增欄位 FullContactName,資料型別自動顯示為 computed。
  3. Formula 欄位輸入運算式:
ContactName + ' (' + CASE WHEN ContactTitle IS NOT NULL 
    THEN ContactTitle + ', ' ELSE '' END + CompanyName + ')'

儲存後自動調整為:((([ContactName]+' (')+case when [ContactTitle] IS NOT NULL then [ContactTitle]+', ' else '' end)+[CompanyName])+')')

步驟 2:建立使用 Stored Procedure 的 TableAdapter

  1. 資料集設計師 → 右鍵 → Add > TableAdapter。
  2. 選擇 Use existing stored procedures 或 Create new stored procedures。
  3. 對應 Select/Insert/Update/Delete 至各自 SP。
  4. SP 內部 INSERT/UPDATE 自然排除 Computed Column,避免衝突。

關鍵差異

Ad-hoc SQL TableAdapterStored Procedure TableAdapter
精靈自動產生 INSERT/UPDATE 包含所有 Select 欄位SP 由開發者手寫,完全控制欄位清單
Computed Column 會被錯誤包含在 INSERT/UPDATESP 直接略過 Computed Column,零衝突
重新執行精靈會覆蓋手動修正SP 獨立維護,不受精靈影響

補充:Persisted Computed Column

結語

Computed Column 是資料庫層級計算欄位的優雅實作。搭配 Stored Procedure TableAdapter,完美解決自動產生代碼衝突問題,兼顧效能與維護性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved