SQL Delphi 中的服务器和数据库事务
SQL Server and database transactions in Delphi
我在 Delphi、Sales
和 SaleItem
中有两个 table,它们是主要细节,我需要计算 [= =14=] 列中的 SaleItem
table 并将此值保存在 Sales
table 中的 PriceTotal
列中。
但是为此我需要使用数据库事务。怎么做?我以前从未做过,也没有找到任何可以让我在互联网上做的具体内容。
如何在Delphi中使用交易?我正在使用 Firedac 控件和 SQL Server 2014。
你真的不需要把数据存储在你的 master 中 table,那将是非常糟糕的设计。
只需在您的查询中计算它,像这样从主服务器获取数据
select SalesID,
OtherSalesFields,
( select sum(isnull(SaleItem.PriceItem, 0))
from SaleItem
where SaleItem.SalesID = Sales.SalesID
) as TotalPriceItem
from Sales
现在,每次获取此查询时,您都将始终获得正确的值,而不必担心保持值同步、交易或其他任何事情
如果您真的必须将值存储在 Sales 中(这是糟糕的设计),那么永远不要在客户端中这样做,因为您无法使值保持同步。在这种情况下,在 SalesItem table 上创建一个触发器,它将计算值并更新 Sales table.
我在 Delphi、Sales
和 SaleItem
中有两个 table,它们是主要细节,我需要计算 [= =14=] 列中的 SaleItem
table 并将此值保存在 Sales
table 中的 PriceTotal
列中。
但是为此我需要使用数据库事务。怎么做?我以前从未做过,也没有找到任何可以让我在互联网上做的具体内容。
如何在Delphi中使用交易?我正在使用 Firedac 控件和 SQL Server 2014。
你真的不需要把数据存储在你的 master 中 table,那将是非常糟糕的设计。
只需在您的查询中计算它,像这样从主服务器获取数据
select SalesID,
OtherSalesFields,
( select sum(isnull(SaleItem.PriceItem, 0))
from SaleItem
where SaleItem.SalesID = Sales.SalesID
) as TotalPriceItem
from Sales
现在,每次获取此查询时,您都将始终获得正确的值,而不必担心保持值同步、交易或其他任何事情
如果您真的必须将值存储在 Sales 中(这是糟糕的设计),那么永远不要在客户端中这样做,因为您无法使值保持同步。在这种情况下,在 SalesItem table 上创建一个触发器,它将计算值并更新 Sales table.