代码之家  ›  专栏  ›  技术社区  ›  Anderson

Delphi中的SQL Server和数据库事务[关闭]

  •  -2
  • Anderson  · 技术社区  · 7 年前

    Sales SaleItem ,它们是主细节,我需要计算 PriceItem 中的列 PriceTotal 桌子

    但为此,我需要使用数据库事务。怎么做?我以前从未这样做过,我也没有找到任何具体的方法可以让我在互联网上这样做。

    如何在Delphi中使用事务?我正在使用Firedac控件和SQL Server 2014。

    1 回复  |  直到 7 年前
        1
  •  2
  •   GuidoG    7 年前

    您真的不需要将这些数据存储在主表中,这将是非常糟糕的设计。

    select SalesID,
           OtherSalesFields,
           ( select sum(isnull(SaleItem.PriceItem, 0)) 
             from   SaleItem 
             where  SaleItem.SalesID = Sales.SalesID
           ) as TotalPriceItem
    from   Sales
    

    如果你真的必须在销售中存储价值(这是糟糕的设计),那么永远不要在客户中这样做,因为你无法保持价值同步。在这种情况下,在SalesItem表上创建一个触发器,该触发器将计算该值并更新Sales表。