0

我必须保持最新的帐户余额、更改日志并使用它。

在我看来,选项是:

  1. 保持在一行中,
  2. 使用触发器将更改保存到单独的表中
  3. 使用 select|update 进行更新
  4. 使用表中的简单选择来访问值

替代方案是:

  1. 将值保存在单独的表中,
  2. 使用 Select Last 和 Insert 来影响更新
  3. 使用 Select Last 从单独的表中访问值

有谁知道哪个更快?里面有很多吗?

史蒂夫

4

1 回答 1

0

您提出的建议似乎太复杂了...我建议做不同的事情:我将有两个具有主从关系的表。在详细信息中,我将插入行,其触发器将更新主表

balance (account, amount, ...)
balance_detail (account, amount, ...)

balance_detail_after_insert
begin
    update master
    set amount = amount + new.amount
    where account = new.account;
end

balance_detail_after_update
begin
    update master
    set amount = amount + new.amount - old.amount
    where account = new.account;
end

balance_detail_after_delete
begin
    update master
    set amount = amount - new.amount
    where account = new.account;
end

进行任何更改后,您只需关闭/打开主表即可刷新数据。

于 2013-04-14T11:06:18.183 回答