plsql只提交存储过程里的事务_plsql 存储过程 事务 | 学步园
1、事務(wù)用于確保數(shù)據(jù)的一致性,由一組相關(guān)的DML語(yǔ)句組成,該組DML語(yǔ)句所執(zhí)行的操作要么全部確認(rèn),要么全部取消。
2、當(dāng)執(zhí)行事務(wù)操作(DML)時(shí),Oracle會(huì)在被作用的表上加鎖,以防止其他用戶改變表結(jié)構(gòu),同時(shí)也會(huì)在被作用的行上加行鎖,以防止其他事務(wù)在相應(yīng)行上執(zhí)行DML操作。
3、當(dāng)執(zhí)行事務(wù)提交或事務(wù)回滾時(shí),Oracle會(huì)確認(rèn)事務(wù)變化或回滾事務(wù)、結(jié)束事務(wù)、刪除保存點(diǎn)、釋放鎖。
4、提交事務(wù)(COMMIT)確認(rèn)事務(wù)變化,結(jié)束當(dāng)前事務(wù)、刪除保存點(diǎn),釋放鎖,使得當(dāng)前事務(wù)中所有未決的數(shù)據(jù)永久改變。
5、保存點(diǎn)(SAVEPOINT)在當(dāng)前事務(wù)中,標(biāo)記事務(wù)的保存點(diǎn)。
6、回滾事務(wù)(ROLLBACK)回滾整個(gè)事務(wù),刪除該事務(wù)所定義的所有保存點(diǎn),釋放鎖,丟棄所有未決的數(shù)據(jù)改變。
7、回滾事務(wù)到指定的保存點(diǎn)(ROLLBACK TO SAVEPOINT)回滾當(dāng)前事務(wù)到指定的保存點(diǎn),丟棄該保存點(diǎn)創(chuàng)建后的任何改變,釋放鎖。
8、當(dāng)執(zhí)行DDL、DCL語(yǔ)句,或退出SQL*PLUS時(shí),會(huì)自動(dòng)提交事務(wù);
9、事務(wù)期間應(yīng)避免與使用者互動(dòng);
10、查詢數(shù)據(jù)期間,盡量不要啟動(dòng)事務(wù);
11、盡可能讓事務(wù)持續(xù)地越短越好;
12、在事務(wù)中盡可能存取最少的數(shù)據(jù)量
案例:
whenothersthen
others處本應(yīng)該寫異常名稱,如果不想把異常分得那麼細(xì),可以籠統(tǒng)一點(diǎn)用others來(lái)捕獲,即所有異常均用others來(lái)捕獲。
RAISE_APPLICATION_ERROR
是將應(yīng)用程序?qū)S械腻e(cuò)誤從服務(wù)器端轉(zhuǎn)達(dá)到客戶端應(yīng)用程序(其他機(jī)器上的SQLPLUS或者其他前臺(tái)開(kāi)發(fā)語(yǔ)言)
createorreplaceprocedurestu_proc
(
v_idinnumber,
v_nameinvarchar2,
v_ageinnumber,
v_msg outvarchar2)asbegininsertintostudent(id, sname, age)values(v_id, v_name, v_age);commit;
v_msg:='添加成功';
exceptionwhenothersthenrollback;
v_msg:='失敗成功';
RAISE_APPLICATION_ERROR(-20010,'ERROR:違反唯一索引約束!');end;
總結(jié)
以上是生活随笔為你收集整理的plsql只提交存储过程里的事务_plsql 存储过程 事务 | 学步园的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python os.system关闭lo
- 下一篇: 帆软报表多行多条数据写入表_在线报表Fi