1
请有人帮忙。存储过程中的交易
我在作业中有几个存储过程,并在其中一个我开始一个事务删除一些行,如果行大于10,然后我回滚。然而,如果没有我不想立即犯下,因为2个存储过程后来我做了类似的事情。然而,如果在这种情况下,如果计数大于10,我希望它在我盯着交易(前两个存储过程)时一直回滚到
是否可以在存储过程中启动事务并具有多个回滚并在某处结束提交权限,还是必须将所有代码放入一个存储过程才能执行此操作?
请有人帮忙。存储过程中的交易
我在作业中有几个存储过程,并在其中一个我开始一个事务删除一些行,如果行大于10,然后我回滚。然而,如果没有我不想立即犯下,因为2个存储过程后来我做了类似的事情。然而,如果在这种情况下,如果计数大于10,我希望它在我盯着交易(前两个存储过程)时一直回滚到
是否可以在存储过程中启动事务并具有多个回滚并在某处结束提交权限,还是必须将所有代码放入一个存储过程才能执行此操作?
您可以使用@@ TRANCOUNT来确定您是否有未完成的未提交事务,然后使用它来规定存储过程的逻辑。
CREATE PROCEDURE Proc1
AS
BEGIN
BEGIN TRANSACTION
// DO STUFF
IF (@@ROWCOUNT > 10)
ROLLBACK TRANSACTION
END
CREATE PROCEDURE Proc2
AS
BEGIN
IF (@@TRANCOUNT > 0)
BEGIN
// DO STUFF
IF (@@ROWCOUNT > 10)
ROLLBACK TRANSACTION
END
END
CREATE PROCEDURE Proc3
AS
BEGIN
IF (@@TRANCOUNT > 0)
BEGIN
// DO STUFF
IF (@@ROWCOUNT > 10)
ROLLBACK TRANSACTION
ELSE
COMMIT TRANSACTION
END
END
谢谢,那正是我想要的。 :) – Abbaskhan
MySQL或SQL-Server? – RandomSeed
在我看来,最好避免在存储过程中完全提交和回滚。 –