| PostgreSQL 8.0.0 中文文件(轉譯自 PostgreSQL 中國 製作的簡體中文版本) | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Fast Forward | Next | |
使用 RELEASE SAVEPOINT 刪除一個保存點, 而不會拋棄這個保存點建立之後執行的命令結果。
聲明一個還沒有建立的保存點名字是一個錯誤。
在保存點方面,游標有一些非交易性的行為。任何在保存點裡打開的游標不會在回滾掉這個保存點之後關閉。 如果一個游標在保存點裡面,並且游標被一個 FETCH 命令影響, 而這個保存點稍後回滾了,那麼這個游標的位置仍然在 FETCH 讓它指向的位置 (也就是,FETCH 不會被回滾)。 如果一個游標的操作導致交易回滾,那麼這個游標就會置於不可執行狀態, 所以,儘管一個交易可以用 ROLLBACK TO SAVEPOINT 重新恢復,但是游標不能再使用了。
撤銷 my_savepoint 建立之後執行的命令的影響:
ROLLBACK TO SAVEPOINT my_savepoint;
游標位置不受保存點回滾的影響:
BEGIN;
DECLARE foo CURSOR FOR SELECT 1 UNION SELECT 2;
SAVEPOINT foo;
FETCH 1 FROM foo;
?column?
----------
1
ROLLBACK TO SAVEPOINT foo;
FETCH 1 FROM foo;
?column?
----------
2
COMMIT;