簡體   English   中英

在SQL Server中進行更改之前和之后需要顯示數據庫記錄

[英]Need to show database records before and after changes have been made in SQL-server

我在SQL服務器中執行查詢,該查詢使用2個表執行以下操作:名為“ accadj”的表1具有3個字段的舊值和新值的列表,因此accadj有6列。 表2稱為“ accnt”,其中包含實際記錄。 當accnt中的記錄與accadj中的舊值匹配時,accnt中的值將更改為與accadj中的新值匹配。 accadj看起來像這樣:

accadj看起來像這樣

accnt看起來像這樣: 在此處輸入圖片說明

這些圖片都只是完整表格的摘要。 我描述的查詢代碼如下所示:

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/zh-cn/library/ms177564.aspx

您插入的表是您的新值,已刪除的表是您的舊值。 您可以將它們插入到臨時表/表變量中,然后在代碼中進一步使用。 或者,如果您的SQL版本支持,請查看更改數據捕獲。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM