SQL Server 2008:否';释放保存点';对于当前交易

SQL Server 2008:否';释放保存点';对于当前交易,sql,sql-server-2008,Sql,Sql Server 2008,我使用PHP数据库抽象层来处理MySQL和SQL Server。MySQL有一个SQL Server不支持的“release savepoint”语句,我在t-SQL中找不到可以替代它的类似语句。有人知道解决这个问题的方法吗,或者功能的缺乏可以被安全地忽略吗 我很感激你的洞察力 干杯我对MySQL了解不多,但听起来有点像使用 Save Transaction <Name> and Rollback Transaction <Name> 保存事务和回滚事务 将事务部分回

我使用PHP数据库抽象层来处理MySQL和SQL Server。MySQL有一个SQL Server不支持的“release savepoint”语句,我在t-SQL中找不到可以替代它的类似语句。有人知道解决这个问题的方法吗,或者功能的缺乏可以被安全地忽略吗

我很感激你的洞察力


干杯

我对MySQL了解不多,但听起来有点像使用

Save Transaction <Name> and Rollback Transaction <Name>
保存事务和回滚事务

将事务部分回滚到命名点。请参见

我对MySQL了解不多,但听起来有点像使用

Save Transaction <Name> and Rollback Transaction <Name>
保存事务和回滚事务

将事务部分回滚到命名点。请参见SQL Server中的

,释放保存点无需执行任何操作。保存点在最后一次事务提交或回滚时自动“释放”,您无需对其进行中间管理。

在SQL Server中,无需执行任何操作来释放保存点。保存点在最后一次事务提交或回滚时自动“释放”,您不需要对它们进行中间管理。

ANSI标准语法是SAVEPOINT、rollback to SAVEPOINT和RELEASE SAVEPOINT。Oracle、DB/2、MySQL、Postgres、Sybase、Informix、Interbase和Firebird都使用相同的标准语法。SQL Server是一个奇怪的东西,它的语法不同,没有“release”


正如Remus Rusanu所说,虽然它不是严格要求的,但如果它知道不再需要保存点,它可以帮助数据库更好地管理内部资源(它当然对Oracle、Interbase和Firebird等多代体系结构有所帮助)。

ANSI标准语法是savepoint,回滚到savepoint,并释放SAVEPOINT。Oracle、DB/2、MySQL、Postgres、Sybase、Informix、Interbase和Firebird都使用相同的标准语法。SQL Server是一个奇怪的东西,它的语法不同,没有“release”


正如Remus Rusanu所说,虽然它不是严格要求的,但如果它知道不再需要保存点,它可以帮助数据库更好地管理内部资源(这在Oracle、Interbase和Firebird等多代体系结构上肯定有帮助)。

这些语句映射到MySQL的保存点并回滚到保存点;发布的目的是删除保存点,而根本不提交或回滚。MySQL手册中:“RELEASE SAVEPOINT语句将从当前事务的保存点集中删除命名的保存点。不会发生提交或回滚。如果保存点不存在,则是错误的。”我认为这些语句不提供该功能?我现在明白了,我没有遇到任何可以清除交易标记的东西。我想你可以忽略他们这是不正确的。回滚事务(带或不带名称)回滚到最外层的事务。您可以用@TRANCOUNT-嵌套第二个事务来证明这一点,选中@TRANCOUNT(将为2),然后回滚“内部”嵌套事务@@TRANCOUNT现在将为零,并且这些语句映射到MySQL的保存点并回滚到保存点;发布的目的是删除保存点,而根本不提交或回滚。MySQL手册中:“RELEASE SAVEPOINT语句将从当前事务的保存点集中删除命名的保存点。不会发生提交或回滚。如果保存点不存在,则是错误的。”我认为这些语句不提供该功能?我现在明白了,我没有遇到任何可以清除交易标记的东西。我想你可以忽略他们这是不正确的。回滚事务(带或不带名称)回滚到最外层的事务。您可以用@TRANCOUNT-嵌套第二个事务来证明这一点,选中@TRANCOUNT(将为2),然后回滚“内部”嵌套事务@@TRANCOUNT现在将为零,这也是我所希望的。谢谢酷,这正是我所希望的。谢谢