需要在 SQL-server 中显示更改前后的数据库记录
Need to show database records before and after changes have been made in SQL-server
我正在 SQL-server 中执行查询,该查询使用 2 tables 执行以下操作:table 1 称为 "accadj" 有一个旧值和新值列表对于 3 个字段,因此 accadj 有 6 列。 Table 2 称为 "accnt" 中有实际记录。当 accnt 中的记录与 accadj 中的旧值匹配时,accnt 中的值将更改为以匹配 accadj 中的新值。 accadj 看起来像这样:
accnt 看起来像这样:
这些图片都只是完整 table 的片段。我描述的查询代码有效,如下所示:
Update accnt
set accnt.accno = accadj.accnonew,
accnt.jno =accadj.jnonew,
accnt.saccno =accadj.saccnonew
from accnt accnt join accadj accadj with(nolock)
on accnt.accno = accadj.accnoold
and accnt.jno = accadj.jnoold
and accnt.saccno =accadj.saccnoold
我需要显示查询 运行 之前和之后记录的样子,然后打印出该列表。我知道如何在查询 运行 之前显示记录,在我刚刚描述的代码前面使用这段代码:
select accnt.*
from accnt, accadj
where accnt.accno = accadj.accnoold
and accnt.jno = accadj.jnoold
and accnt.saccno =accadj.saccnoold
但是在查询运行之后,旧的记录已经不存在了,我不知道如何用自己的旧版本来显示新更改的记录。关于如何解决这个问题的任何想法?
在更新语句中使用 OUTPUT 子句
https://msdn.microsoft.com/en-us/library/ms177564.aspx
您插入的 table 是您的新值,删除的是您的旧值。
您可以将它们插入临时 table/table 变量,然后在您的代码中进一步使用。或者,如果您的 SQL 版本支持查看更改数据捕获。
我正在 SQL-server 中执行查询,该查询使用 2 tables 执行以下操作:table 1 称为 "accadj" 有一个旧值和新值列表对于 3 个字段,因此 accadj 有 6 列。 Table 2 称为 "accnt" 中有实际记录。当 accnt 中的记录与 accadj 中的旧值匹配时,accnt 中的值将更改为以匹配 accadj 中的新值。 accadj 看起来像这样:
accnt 看起来像这样:
这些图片都只是完整 table 的片段。我描述的查询代码有效,如下所示:
Update accnt
set accnt.accno = accadj.accnonew,
accnt.jno =accadj.jnonew,
accnt.saccno =accadj.saccnonew
from accnt accnt join accadj accadj with(nolock)
on accnt.accno = accadj.accnoold
and accnt.jno = accadj.jnoold
and accnt.saccno =accadj.saccnoold
我需要显示查询 运行 之前和之后记录的样子,然后打印出该列表。我知道如何在查询 运行 之前显示记录,在我刚刚描述的代码前面使用这段代码:
select accnt.*
from accnt, accadj
where accnt.accno = accadj.accnoold
and accnt.jno = accadj.jnoold
and accnt.saccno =accadj.saccnoold
但是在查询运行之后,旧的记录已经不存在了,我不知道如何用自己的旧版本来显示新更改的记录。关于如何解决这个问题的任何想法?
在更新语句中使用 OUTPUT 子句 https://msdn.microsoft.com/en-us/library/ms177564.aspx
您插入的 table 是您的新值,删除的是您的旧值。 您可以将它们插入临时 table/table 变量,然后在您的代码中进一步使用。或者,如果您的 SQL 版本支持查看更改数据捕获。