Sql 无论while循环的范围如何,一个事务是否可以有多个提交
以下是SQL Server存储过程。在事务开始时有两个提交,如下所示。这是否有效(开始在while循环中,第一次提交在同一while循环中,但第二次提交在第二次while循环中)?如果没有,解决办法是什么 请帮忙Sql 无论while循环的范围如何,一个事务是否可以有多个提交,sql,sql-server,Sql,Sql Server,以下是SQL Server存储过程。在事务开始时有两个提交,如下所示。这是否有效(开始在while循环中,第一次提交在同一while循环中,但第二次提交在第二次while循环中)?如果没有,解决办法是什么 请帮忙 IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'DELETE_COBOC_DATA') DROP PROCEDURE DELETE_COBOC_DATA GO CREATE PROCEDURE DEL
IF EXISTS (SELECT * FROM sys.objects WHERE type = 'P' AND name = 'DELETE_COBOC_DATA')
DROP PROCEDURE DELETE_COBOC_DATA
GO
CREATE PROCEDURE DELETE_COBOC_DATA @ORGDN VARCHAR(100), @CHUNK VARCHAR(10)
AS
BEGIN
-- some code that executes before while
WHILE (@NUM_ROWS_TMPTRADMIN > 0)
BEGIN
BEGIN TRANSACTION
-- executes some code
COMMIT TRANSACTION
END
-- some more code
WHILE @NUM_ROWS_TMPDIR > 0
BEGIN
-- code code code
COMMIT TRANSACTION
-- code code code
END
-- some more code here as well
END
据我所知,MySQL允许这样做,您不能提交同一事务两次。您可以有嵌套的事务,但不能有“部分”提交,这与事务的概念相矛盾(要么全有,要么全无)。如果两个提交都被执行,第二个提交将抛出一个错误
The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION
仅供参考:添加问题时,编辑框上方有工具栏。其中一个按钮显示为
{}
,悬停在上面表示代码示例。:)选择代码块并单击该按钮将格式化问题中的代码。