我已经写了一个查询来删除表中的所有行,然后从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