如何处理使用复制保存AMOUNT值的列

时间:2013-02-10 16:55:44

标签: sql sql-server-2008

我们正在使用SQL Server 2008 SP 2,并且有6个站点之间的复制

问题是:

我们将金额值保存在一列(例如:500 $)中,这可能会同时在两个站点中更改,如果此时复制已关闭,那么我们在两个站点中都有两个不同的值,如果我使用最近更新或发布者作为赢家我会得到错误的金额值

是否有任何复制策略来合并这两个值?

1 个答案:

答案 0 :(得分:0)

你的问题有些奇怪。如果您在事务性数据库上使用事务复制(请参阅here),则不会发生这种情况。

问题是您的数据库设计不正确。您允许“增量”更改进入字段,而不存储增量(事务)。你的问题有点含糊不清,因为你没有解释应该发生什么。为什么最近的价值不足够?

您应该将数据库更改存储为事务:

  • 起始价:$ 500
  • 交易1:加100美元
  • 交易2:减去$ 200

而不是绝对值:

  • 起始价:$ 500
  • 交易1:将价值更改为$ 600
  • 交易2:将价值更改为$ 400

在第一种情况下,您可以按任意顺序应用交易以赶上。在第二种情况下,您最终只会应用其中一种。

汇总值(例如余额)应该来自交易,可能使用触发器或存储过程。