国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

SavePoint (bzszp )

2024-07-21 02:08:19
字體:
來源:轉載
供稿:網友

保存點(savepoint)是事務處理過程中的一個標志,與回滾命令(rollback)結合使用,主要的用途是允許用戶將某一段處理回滾而不必回滾整個事務,這在pl/sql開發中還是很有用處的。
下面的例子中,把savepoint標記在insert語句之前,如果這條insert語句試圖將重復的數據保存到emp表中的話,將觸發執行預先定義的dup_val_on_index例外處理,在這里面的rollback to do_insert命令將回滾上面的那條insert操作,而不會影響前面的任何操作。

declare
   emp_id  emp.empno%type;
begin
   update emp set ... where empno = emp_id;
   delete from emp where ...
   ...
   savepoint do_insert;
   insert into emp values (emp_id, ...);
exception
   when dup_val_on_index then
      rollback to do_insert;
end;

如果你定義了多個savepoint,當你指定回滾到某個savepoint時,那么回滾操作將回滾這個savepoint后面的所有操作(即使后面可能標記了n個savepoint)。例如,在一段處理中
你定義了五個savepoint,從第三個savepoint回滾,后面的第四、第五個標記的操作都將被回滾,如果不使用rollback to savepoint_name而使用rollback,將會滾整個事務處理。

如果你在遞歸子程序里面定義了一個savepoint, 如果每一個遞歸層都設置了savepoint. 此時, 你只能回滾到最近的一個savepoint.

savepoint的聲明可以在同一個事務處理里面重復定義. 它的作用就是把savepoint從上一個位置轉移到目前的位置. 因而,執行回滾也只回滾到最近的savepoint.
下面是一個例子:

begin
   ...
   savepoint my_point;
   update emp set ... where empno = emp_id;
   ...
   savepoint my_point;  -- move my_point to current point
   insert into emp values (emp_id, ...);
exception
   when others then
      rollback to my_point;
end;

另外,oracle沒有對每個session里面可以使用的savepoint個數做限制.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 富裕县| 邵阳市| 诸暨市| 广州市| 湖北省| 惠东县| 临桂县| 彰武县| 龙门县| 缙云县| 桑日县| 清苑县| 金乡县| 府谷县| 若尔盖县| 永福县| 苏尼特右旗| 洪江市| 根河市| 库尔勒市| 丹东市| 昭觉县| 廊坊市| 吉安县| 元谋县| 朝阳区| 洞头县| 肇庆市| 鱼台县| 巧家县| 怀柔区| 洛浦县| 绵竹市| 德格县| 南昌市| 霍林郭勒市| 漳州市| 浦北县| 禹州市| 贺州市| 务川|