BeginTrans用于開始一個(gè)事物;RollbackTrans用于回滾事務(wù);CommitTrans用于提交所有的事務(wù)處理結(jié)果,即確認(rèn)事務(wù)的處理
創(chuàng)新互聯(lián)建站-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比廣陽網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式廣陽網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋廣陽地區(qū)。費(fèi)用合理售后完善,10余年實(shí)體公司更值得信賴。
BeginTrans和CommitTrans 用于標(biāo)記事務(wù)的開始和結(jié)束,在這兩個(gè)之間的語句,就是作為事務(wù)處理的語句
當(dāng)然不是了,在Oracle中,只有DML才會(huì)開啟一個(gè)事務(wù)。也就是說Insert,Update,Delete這些都會(huì)開啟一個(gè)事務(wù),并且該事務(wù)在commit/rollback/ddl命令時(shí)會(huì)自動(dòng)結(jié)束。
其他的,像查詢語句Select(不包含F(xiàn)or Update等語句)時(shí),是不會(huì)開啟一個(gè)事務(wù)的。
補(bǔ)充:
首先有一點(diǎn)非常抱歉,上次的回答中誤將DML寫成了DDL,可能這一點(diǎn)兒讓你誤解了。
“當(dāng)insert語句后會(huì)打開事務(wù),然后再來一個(gè)insert語句又會(huì)是一個(gè)新事物是嗎”這種說法是不正確的,第一個(gè)Insert沒有commit或者rollback的情況下,第二個(gè)Insert和第一個(gè)是屬于同一個(gè)事務(wù)的。因?yàn)镮nsert不屬于commit/rollback/ddl命令,而是屬于DML命令。
當(dāng)?shù)谝粋€(gè)Insert結(jié)束后,立即執(zhí)行一個(gè)新建表,刪除表等命令(DDL命令),則會(huì)結(jié)束當(dāng)前事務(wù)。
事務(wù)是為了實(shí)現(xiàn)數(shù)據(jù)的一致性和并發(fā)處理,你對(duì)數(shù)據(jù)進(jìn)行定義和修改時(shí)就會(huì)產(chǎn)生事務(wù)。
例如你執(zhí)行update語句,這時(shí)事務(wù)就開始了,執(zhí)行commit會(huì)提交事務(wù),而rollback會(huì)回滾(撤銷)事務(wù)。如果你什么也不做,那么正常退出程序時(shí)會(huì)自動(dòng)提交,而程序異常中止則會(huì)回滾事務(wù)。