2013-04-30 22 views
0

有問題。我有兩個語句如下:如何在插入/刪除期間不錯過行

聲明#1

Insert into tblAudit (Col1, Col2) 
Select Col1, Col2 From tblSoruce 
Where "Same Condition" 

聲明#2

Delete from tblSource 
Where "Same Condition" 

我想先放在一個審計表,正在後刪除的所有行。

什麼是最好的方式來完成這個沒有「遺漏」2條語句之間的任何行?

在我有SQL語句的方式中,行數可以從第一個語句改變爲第二個語句,這不是我想要的。 (我不能使用OUTPUT子句,因爲有FK關係)

如何以更有效的方式(不包括臨時表)做到這一點任何幫助

感謝。

回答

1

當從tblSource中刪除值時,您可以使用觸發器自動執行插入審計日誌;這樣你就可以確切知道哪些行被刪除了,應該插入到tblAudit中。

+0

當然。但這意味着從任何應用程序刪除源表中的任何內容都會導致插入到審計中......嘗試查看是否可以僅爲此特定的sql部分執行此操作。 – user1967701 2013-04-30 20:01:09

+0

您可以設置事務隔離級別以確保數據一致嗎?我對大多數關卡都沒有多少經驗,但快速搜索顯示REPEATABLE READ可能會有所幫助。 – davidk 2013-04-30 21:39:26

+0

感謝您的意見。 – user1967701 2013-05-01 21:25:12

相關問題