【问题标题】:SQL Server trigger calculation unit price how?SQL Server 触发器计算单价如何?
【发布时间】:2014-01-28 06:10:25
【问题描述】:

我需要一个 SQL Server 数据库的触发器来计算单价。数据库表名OrnekTbl和列名是

TotalPrice 
Quantity
UnitPrice

保存TotalPriceQuantity时如何更新UnitPrice

【问题讨论】:

  • 请问哪个 Sql rdbms?此外,为什么不 1) 在您插入应用程序时(或在 Insert Proc 中)计算总价格,或 2) 考虑计算列并节省空间。触发器绝不应该是首选解决方案。
  • 我同意@StuartLC - 我不知道你为什么要存储它:要么使用计算列,要么在你的应用程序中计算它,无论是当你检索该行还是作为@ 987654326@ 属性,它只有一个在行创建的对象中执行此计算的 Getter。
  • 感谢您的关注。我尝试用 Visual Basic 编写程序。当我保存总价格和数量时,我会在我的 gridview 和 sql 数据库中看到这些值。在我的 gridview 中,我看到了 unitprice 的计算,但没有 sql 数据库。我认为为了解决这个问题,我需要触发器
  • SQL 是一种 查询语言 - 但 不是 数据库.....所以真的没有 SQL 数据库 - 有使用 SQL 的数据库 - 是的。

标签: c# sql sql-server triggers


【解决方案1】:

假设您已阅读评论中的上述注意事项,并假设您在 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 的维护开发人员 - 触发器在幕后工作,因此不会立即明显 w.r.t.理解和可读性。

【讨论】:

  • sql server, TotalPrice (money) Quantity("nvarchar(50)) UnitPrice (money)
  • 数量NVARCHAR?是时候重新考虑您的表结构了。
  • 你推荐什么数量?
  • @user3198433:如果对您有帮助,请不要忘记将问题标记为已回答!
猜你喜欢
  • 2021-07-26
  • 1970-01-01
  • 2010-12-11
  • 1970-01-01
  • 1970-01-01
  • 2022-09-22
  • 2019-04-08
  • 1970-01-01
相关资源
最近更新 更多