Zend framework Zend适配器事务回滚失败MSSQL
我有一个奇怪的错误,我使用MSSQL 2008 R2和ZendFw 1.12 首先。。回滚在try中没有失败Zend framework Zend适配器事务回滚失败MSSQL,zend-framework,rollback,Zend Framework,Rollback,我有一个奇怪的错误,我使用MSSQL 2008 R2和ZendFw 1.12 首先。。回滚在try中没有失败 // Zend_DB_Table Adapter $adapter = Zend_Db_Table::getDefaultAdapter(); // Start Transaction $adapter->beginTransaction(); try { $adapter->rollBack(); r
// Zend_DB_Table Adapter
$adapter = Zend_Db_Table::getDefaultAdapter();
// Start Transaction
$adapter->beginTransaction();
try {
$adapter->rollBack();
return (int) 1;
} catch (Exception $e) {
throw new Api_Exception($e->getMessage(), $e->getCode(), $e);
}
但是。。回滚在catch内失败
是的,我故意在try-bellow上制造错误,使其进入捕捉区域
// Zend_DB_Table Adapter
$adapter = Zend_Db_Table::getDefaultAdapter();
// Start Transaction
$adapter->beginTransaction();
try {
return (int) A;
} catch (Exception $e) {
$adapter->rollBack();
throw new Api_Exception($e->getMessage(), $e->getCode(), $e);
}
它回来了。。Zend_Db_适配器_Sqlsrv_异常:在调用Sqlsrv_提交或Sqlsrv_回滚之前,必须通过调用Sqlsrv_开始_事务来启动事务
有什么线索吗?嗨,去看看这个链接
您可以使用安全且简单的代码来运行100%运行所有查询行或不运行任何查询行
|query 1| = like insert into or select or ...
|count of lines| = number off query
DECLARE @rowcount int set @rowcount = 0 ;
BEGIN TRANSACTION [Tran1]
BEGIN TRY
<Query 1> ; set @rowcount = (@rowcount + @@ROWCOUNT);
<Query 2> ; set @rowcount = (@rowcount + @@ROWCOUNT);
...
IF @rowcount = <count of lines>
COMMIT TRANSACTION[Tran1]
ELSE
ROLLBACK TRANSACTION[Tran1]
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION[Tran1]
END CATCH
DECLARE @rowcount int set @rowcount = 0 ;
BEGIN TRANSACTION [Tran1]
BEGIN TRY
insert into [database].[dbo].[tbl1] (fld1) values('1') ;
set @rowcount = (@rowcount + @@ROWCOUNT);
insert into [database].[dbo].[tbl2] (fld1) values('2') ;
set @rowcount = (@rowcount + @@ROWCOUNT);
IF @rowcount = 2
COMMIT TRANSACTION[Tran1]
ELSE
ROLLBACK TRANSACTION[Tran1]
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION[Tran1]
END CATCH