Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
en SET XACT_ABORT处于启用状态,如果Transact-SQL语句引发运行时错误,则整个事务将终止并回滚。当SET XACT_ABORT处于禁用状态时,在某些情况下,仅回滚引发错误的Transact-SQL语句,事务将继续处理。 IF EXI_Sql_Sql Server_Sql Server 2012_Transactions - Fatal编程技术网

en SET XACT_ABORT处于启用状态,如果Transact-SQL语句引发运行时错误,则整个事务将终止并回滚。当SET XACT_ABORT处于禁用状态时,在某些情况下,仅回滚引发错误的Transact-SQL语句,事务将继续处理。 IF EXI

en SET XACT_ABORT处于启用状态,如果Transact-SQL语句引发运行时错误,则整个事务将终止并回滚。当SET XACT_ABORT处于禁用状态时,在某些情况下,仅回滚引发错误的Transact-SQL语句,事务将继续处理。 IF EXI,sql,sql-server,sql-server-2012,transactions,Sql,Sql Server,Sql Server 2012,Transactions,en SET XACT_ABORT处于启用状态,如果Transact-SQL语句引发运行时错误,则整个事务将终止并回滚。当SET XACT_ABORT处于禁用状态时,在某些情况下,仅回滚引发错误的Transact-SQL语句,事务将继续处理。 IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE id=OBJECT_ID('tempdb..#tmpErrors')) DROP TABLE #tmpErrors GO CREATE TABLE #tmp

en SET XACT_ABORT处于启用状态,如果Transact-SQL语句引发运行时错误,则整个事务将终止并回滚。当SET XACT_ABORT处于禁用状态时,在某些情况下,仅回滚引发错误的Transact-SQL语句,事务将继续处理。
IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE id=OBJECT_ID('tempdb..#tmpErrors')) DROP TABLE #tmpErrors
GO
CREATE TABLE #tmpErrors (Error int)
GO
SET XACT_ABORT ON
GO
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
GO
BEGIN TRANSACTION
GO
PRINT N'Creating [Proc A]'
GO
-------------------------------------------------------------------------
CREATE PROCEDURE A
    AS
        -- The body of procedure A
    GO
-------------------------------------------------------------------------

IF @@ERROR<>0 AND @@TRANCOUNT>0 ROLLBACK TRANSACTION
GO
IF @@TRANCOUNT=0 BEGIN INSERT INTO #tmpErrors (Error) SELECT 1 BEGIN TRANSACTION END
GO
PRINT N'Creating [Proc B]'
GO
-------------------------------------------------------------------------
CREATE PROCEDURE B
    AS
        -- The body of procedure B
    GO
-------------------------------------------------------------------------
IF @@ERROR<>0 AND @@TRANCOUNT>0 ROLLBACK TRANSACTION
GO
IF @@TRANCOUNT=0 BEGIN INSERT INTO #tmpErrors (Error) SELECT 1 BEGIN TRANSACTION END
GO
IF EXISTS (SELECT * FROM #tmpErrors) ROLLBACK TRANSACTION
GO
IF @@TRANCOUNT>0 BEGIN
PRINT 'The database update succeeded'
COMMIT TRANSACTION
END
ELSE PRINT 'The database update failed'
GO
DROP TABLE #tmpErrors
GO