我有以下情況:一個存儲過程收集數據,並進行必要的連接,並插入結果到一個臨時表(例如:#Results)現在刪除,然後再插入到目標表中交易
,什麼我想要做的是從#Results所有記錄插入到先前創建的表,但我首先要刪除(截斷/刪除)的目標,然後插入結果。漁獲物正在清理目標表,然後在交易中插入新的#Results。
我做了以下內容:
BEGIN TRANSACTION
DELETE FROM PracticeDB.dbo.TransTable
IF @@ERROR <> 0
ROLLBACK TRANSACTION
ELSE
BEGIN
INSERT INTO PracticeDB.dbo.TransTable
(
[R_ID]
,[LASTNAME]
,[FIRSTNAME]
,[DATASOURCE]
,[USER_STATUS]
,[Salary]
,[Neet_Stat]
)
SELECT [R_ID]
,[LASTNAME]
,[FIRSTNAME]
,[DATASOURCE]
,[USER_STATUS]
,[Salary]
,[Neet_Stat]
FROM #RESULT
Select @@TRANCOUNT TransactionCount, @@ERROR ErrorCount
IF @@ERROR <> 0
ROLLBACK TRANSACTION
ELSE
COMMIT TRANSACTION
END
,但我知道它不能正常工作,我有一個很難找到像這樣的例子,雖然我不知道爲什麼認爲它好像共同點。在這種情況下,儘管插入失敗,它仍然會刪除目標表。
比什麼,一些指導,將作爲這一情況或最佳做法以類似的情況下(什麼最好使用等)最好的辦法不錯。預先感謝您...
謝謝你的快速反應。是的,出於某種原因,首先它會刪除目標表,但隨後會插入一個錯誤,結果將是目標表空和錯誤。似乎現在工作正常,可能是因爲你說當時#Result表爲空。在問候返回@@ ERROR值,謝謝你把那個了 –
這可能是因爲'COMMIT TRANSACTION'運行。您在執行成功運行的「SELECT @@ ERROR」後檢查「@@ ERROR」。 '@@ ERROR'檢查前面的語句,在這種情況下是你的'SELECT'語句,而不是'INSERT'。明白我的意思了嗎? –
是的,我遵循。再次感謝您的快速響應 –