2010-06-23 30 views
1

我使用PHP數據庫抽象層與MySQL和SQL Server一起工作。 MySQL有一個SQL Server不支持的'release savepoint'語句,我不能在T-SQL中找到可替代的語句來代替它。有沒有人知道解決這個問題的方法,或者可以安全地忽略功能的缺失?SQL Server 2008中:沒有「釋放保存點」對當前事務

我會很感激任何見解!

乾杯

回答

1

在SQL Server中,你不需要做任何操作釋放保存點。保存點在最終的事務提交或回滾時自動「釋放」,您不需要對它們進行中間管理。

+0

很酷,這就是我所希望的。謝謝! – Craig 2010-06-25 09:19:45

0

我不知道很多關於MySQL,但它聽起來有點像使用

Save Transaction <Name> and Rollback Transaction <Name> 

的交易部分回滾到指定地點。見MSDN

+0

這些聲明映射到MySQL的SAVEPOINT 並回滾到SAVEPOINT ; RELEASE的目的是在不提交或回滾的情況下刪除保存點。從MySQL手冊: 「的上映SAVEPOINT語句從集合當前事務的保存點命名的保存不提交或回滾時,如果保存點不存在,這是一個錯誤。」 我不認爲這些語句提供了這種功能? – Craig 2010-06-23 12:11:52

+0

我現在明白了,我還沒有遇到任何事情來清除交易標記。我想你可以忽略它們。 – SPE109 2010-06-23 16:52:29

0

ANSI標準語法是SAVEPOINT,ROLLBACK TO SAVEPOINT,和RELEASE SAVEPOINT。 Oracle,DB/2,MySQL,Postgres,Sybase,Informix,Interbase和Firebird都使用相同的標準語法。 SQL Server是一個古怪的語法,沒有「發佈」。

Remus Rusanu表示,雖然這並不是嚴格要求,但如果知道保存點不再必要(它對Oracle,Interbase和Firebird等多代架構無疑有幫助),可以幫助數據庫更好地管理內部資源。