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

Hxj.Data 欄位組合更新:UPDATE SET col = col + col / col - 1 等運算直支援

     編輯:關於ASP.NET

v1.5.1 新增:欄位間運算式直接寫入 UPDATE SET 子句

過去若要 UPDATE table SET a = b + c,必須先查出實體、記憶體運算、再 Update。現在 Update<T>(Field target, FieldExpression expr, WhereClip where) 直接支援欄位運算式,SQL 端完成運算,效能更高、併發更安全。

支援運算子

  • + 加法
  • - 減法
  • * 乘法
  • / 除法
  • % 餘數

運算元可為:欄位、常數、欄位與常數混合。

範例一:欄位 + 欄位

DbSession.Default.Update(
    Products._.UnitPrice, 
    Products._.ReorderLevel + Products._.UnitPrice, 
    Products._.ProductID == 1);

產生 SQL:

UPDATE [Products] SET [UnitPrice] = [Products].[ReorderLevel] + [Products].[UnitPrice]
WHERE [Products].[ProductID] = @p0
Parameters: @p0 = 1

將 UnitPrice 更新為「原 UnitPrice + ReorderLevel」,單一 SQL 完成,無競爭條件。

範例二:欄位 + 常數

DbSession.Default.Update(
    Products._.UnitPrice, 
    Products._.UnitPrice + 1, 
    Products._.ProductID == 1);

產生 SQL:

UPDATE [Products] SET [UnitPrice] = [Products].[UnitPrice] + @p0
WHERE [Products].[ProductID] = @p1
Parameters: @p0 = 1, @p1 = 1

常數自動參數化,防注入。同理支援 UnitPrice - 5、UnitPrice * 1.1、Quantity / 2 等。

適用場景

  • 庫存扣減:UnitsInStock = UnitsInStock - @qty
  • 金額累加:TotalAmount = TotalAmount + @orderAmt
  • 計數器遞增:ViewCount = ViewCount + 1
  • 比例調整:Price = Price * 1.05

所有運算在資料庫引擎執行,原子性保證,免去「查-改-存」三步驟與鎖競爭,是高併發系統的關鍵優化利器。

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