我已經寫了一個查詢來刪除表中的所有行,然後從txt中批量插入。如果批量插入有問題,我不想丟失舊數據,所以我想回滾事務。SQL如何在批量插入失敗時回滾事務
這是我一直想:
BEGIN TRANSACTION
DELETE Users_Login
BULK INSERT Users_Login FROM '\\STRMV1234\ - Some_Table.txt' WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n', FIRSTROW = 2, CODEPAGE = 'ACP')
COMMIT TRANSACTION
但是如果我從表中失去一切的錯誤。我也嘗試下面的代碼,這也不起作用:
BEGIN TRY
BEGIN TRANSACTION
DELETE Users_Login
BULK INSERT Users_Login FROM '\\STRMV1234\ - Some_Table.txt' WITH (FIELDTERMINATOR = ',', ROWTERMINATOR = '\n', FIRSTROW = 2, CODEPAGE = 'ACP')
COMMIT
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK
END CATCH
請發佈確切的錯誤信息。 – datagod
您需要發佈錯誤,有些錯誤不會觸及try catch塊。 – HLGEM
將'BEGIN TRANSACTION ... COMMIT'移動到您的'TRY ... CATCH'之外# – ewahner