2014-01-28 48 views
0

我需要一個SQL Server數據庫的觸發器來計算單位價格。數據庫表名OrnekTbl和列名SQL Server觸發器計算單位價格如何?

TotalPrice 
Quantity 
UnitPrice 

如何更新UnitPrice當我保存的TotalPriceQuantity

+1

請問哪位sql rdbms?另外,爲什麼不1)在您的應用程序中插入(或插入過程)時計算總價格;或者2)考慮計算列和節省空間。觸發器不應該是首選解決方案。 – StuartLC

+0

我同意@StuartLC - 我不知道你爲什麼要存儲它:要麼在你的應用程序中使用計算列或計算它,要麼當你檢索該行或作爲「UnitPrice」屬性,它只有一個Getter在行創建的對象中執行此計算。 –

+0

謝謝你的好感。我嘗試用visual basic編寫程序。當我保存總價格和數量時,我在我的gridview和sql數據庫中看到了這些值。在我的GridView中,我看到unitprice的計算,但sql數據庫沒有任何..我認爲,爲了解決這個問題,我需要觸發 – user3198433

回答

0

假設您已經閱讀在評論上述警告,並假設你是SQL Server上,並假設你有某種對OrnekTbl鍵(我用Name)的:

CREATE TRIGGER t_CalcUnitPrice ON OrnekTbl FOR INSERT, UPDATE AS 
BEGIN 
    UPDATE o 
     -- Depending on the various types of your columns, CAST(x as DECIMAL(N, M)) may be needed 
     SET o.UnitPrice = i.TotalPrice/i.Quantity 
     FROM 
     INSERTED i 
      INNER JOIN OrnekTbl o 
      ON i.Name = o.Name 
     WHERE i.Quantity > 0; -- Avoid Div Zero 
END; 

但我並不想真正成爲應用程序FWIW上的維護開發者 - 觸發器在幕後工作,因此不會立即顯示出來理解和可讀性。

+0

SQL服務器,TotalPrice(錢) 數量(「爲nvarchar(50)) 單價(錢) – user3198433

+1

數量'NVARCHAR'現在是時候重新考慮你的表結構 – StuartLC

+0

您推薦數量 – user3198433