【发布时间】:2014-04-14 04:04:51
【问题描述】:
我尝试使用事务从表中删除几行。我使用了三次命令删除,其中两次正常,第三次包含错误。我想创建保存点并提交删除 2 个对象。但是我收到一个错误:当前事务无法提交,也无法回滚到保存点。回滚整个事务。这是我的代码:
BEGIN TRANSACTION
BEGIN TRY
DELETE FROM employee
WHERE ID = 101; --OK
DELETE FROM employee
WHERE Name = 'James'; --OK
SAVE TRANSACTION point_1;
DELETE FROM employee
WHERE ID = '11a'; --letters are not allowed
COMMIT TRANSACTION
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION point_1
PRINT 'Error! Not all employees were deleted from database.'
END CATCH
谁能帮帮我?非常感谢!
我试过这样:
BEGIN TRANSACTION
DELETE FROM employee
WHERE ID = 101;
DELETE FROM employee
WHERE Name = 'James';
SAVE TRANSACTION point_1;
BEGIN TRY
DELETE FROM employee
WHERE ID = '11a';
END TRY
BEGIN CATCH
if XACT_STATE () = -1
ROLLBACK TRANSACTION
if XACT_STATE () = 1 and @@TRANCOUNT = 0
ROLLBACK TRANSACTION
if XACT_STATE () = 1 and @@TRANCOUNT > 0
ROLLBACK TRANSACTION point_1
PRINT 'Error! Not all employees were deleted from database.'
END CATCH
这次没有错误,但是前两个对象没有被删除。我的错误在哪里?谢谢!
【问题讨论】:
-
我的查询正处于不可提交状态。如何返回我的保存点?
标签: sql-server tsql ssms