我有一個非常標準的腳本,它使用合併功能來插入,更新和刪除記錄。但是,將刪除的結果輸出到審計類型表時遇到了很多問題。當我針對一個乾淨的目標表運行這個過程時,我總是以審覈表中的所有空值結束,儘管事實上沒有任何東西被刪除(此時只插入到非審計表中,這確實發生了,因爲它應該)。在相同條件下,並用同樣的清潔目標表,如果我刪除了:SQL Server合併功能 - 刪除並輸出刪除不能正常工作
OUTPUT deleted.Column1, deleted.Column2 INTO Table_Audit (Column1, Column2)
,取而代之的是:
OUTPUT $action, Inserted.*, Deleted.*
我看沒有什麼實際上已經被刪除,這是奇怪的考慮源和目標表在兩次運行中都是相同的,並且合併謂詞保持不變。第二條語句的操作列中的所有記錄都是我們所期望的插入內容。從字面上來說,唯一不同的是我剛剛提到的。任何想法可能會發生什麼?
我的確認識到臨時解決方法是創建臨時表,將OUTPUT $ action的結果,Inserted。*,Deleted。*傳遞到臨時表中,並從那裏填充審計表。然而,我想要實現的方式更清潔,應該工作。 – TechDawg270