突出显示两个表之间的差异,并将差异存储在另一个表中

时间:2018-04-11 07:58:33

标签: c# sql .net

我有一个c#应用程序。我的SQL数据库(2012版)中还有两个订单表,tblOrderLive和tblOrderTemp。两个表都有一个名为OrderId的主键。

每天都会删除tblOrderTemp的内容,并通过文本文件加载最近3个月的订单。 tblOrderTemp中的任何订单都将添加到tblOrderLive中。

订单也可能已更改(不是OrderId,但可能是付款类型,预计交货日期或订单价值等。

表格的简要示例

tblOrdersLive

OrderId  PaymentType   DateDelivery   OrderValue
1223     Cash          2018-05-01     1000
1255     Credit        2018-05-05     1325
1189     Cash          2018-05-05     800
1093     Cash          2018-05-04     55

tblOrdersTemp

OrderId  PaymentType   DateDelivery   OrderValue
1223     Cash          2018-05-01     900          -- order value changed
1255     Credit        2018-05-05     1325
1189     Credit        2018-07-05     800          -- payment type & date changed
1093     Cash          2018-05-04     55

我希望能够做到以下几点。

如果两个表中的订单具有相同的OrderId,但其中一个字段已更改(因此,在我的第1行上方的示例中,订单值已更改,而第3行中的付款类型和交付日期已更改)更改将记录到第三个表中,如下所示,

tblOrderLog

OrderId DateLog     OldValue    NewValue    FieldName
1223    2018-04-11  1000        900         OrderValue
1189    2018-04-11  Cash        Credit      PaymentType
1189    2018-04-11  2018-05-05  2018-07-05  DateDelivery

所以我想知道最好的方法,在真实的例子中我们需要检查大约20个字段?可以在SQL中完成(/应该这样做)吗?目前我正在考虑在我的C#应用​​程序中执行此操作。

我目前在C#中的计划(不确定这是最好的方式,因此我的问题)是有一个Orders对象。下载订单类型的两个列表(Live& Temp)。然后在我的订单类中实现 IEqualityComparer接口两个突出显示两个具有相同OrderId的订单具有不同的值。然后我将遍历所有字段以找到不同的字段并将它们上传到SQL表tblOrderLog。

0 个答案:

没有答案