我有以下情况,其中存储过程收集数据并执行必要的连接并将结果插入临时表(例如:#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
但我知道它不能正常工作,我很难找到这样的例子,虽然我不知道为什么考虑到它似乎很常见。在这种情况下,尽管插入失败,它仍然会删除目标表。
最重要的是,一些指导会很好地解决这种情况或类似情况下的最佳实践(最好使用什么等等)。先感谢您...