Oracle和PostgreSQL在事务处理上面有哪些区别
本篇内容主要讲解“Oracle和PostgreSQL在事务处理上面有哪些区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Oracle和PostgreSQL在事务处理上面有哪些区别”吧!
Oracle
Oracle数据库,在同一个事务中的多个语句,如某个语句执行出错,该语句不影响其他语句的执行,如事务提交,则执行成功语句会持久化到DB中。
测试脚本:
TEST-orcl@server4>droptabletbl3;Tabledropped.TEST-orcl@server4>createtabletbl3(varvarchar(2),fixedchar(2));Tablecreated.TEST-orcl@server4>TEST-orcl@server4>insertintotbl3values('1','1');1rowcreated.TEST-orcl@server4>insertintotbl3values('2','2');1rowcreated.TEST-orcl@server4>insertintotbl3values('测试x3','测试x3');insertintotbl3values('测试x3','测试x3')*ERRORatline1:ORA-12899:valuetoolargeforcolumn"TEST"."TBL3"."VAR"(actual:6,maximum:2)TEST-orcl@server4>insertintotbl3values('4','4');1rowcreated.TEST-orcl@server4>TEST-orcl@server4>commit;Commitcomplete.TEST-orcl@server4>TEST-orcl@server4>select*fromtbl3;VAFI----112244TEST-orcl@server4>
PG
PG数据库,在同一个事务中的多个语句,如某个SQL语句执行出错,则就算在其后执行commit,事务也会回滚。如在该出错语句之后执行其他DML语句,则会报错。
testdb=#droptableifexiststbl3;tbl3;DROPTABLEtestdb=#createtabletbl3(varvarchar(2),fixedchar(2));CREATETABLEtestdb=#testdb=#begin;BEGINtestdb=#testdb=#insertintotbl3values('1','1');INSERT01testdb=#insertintotbl3values('2','2');INSERT01testdb=#insertintotbl3values('测试3','测试3');ERROR:valuetoolongfortypecharactervarying(2)testdb=#insertintotbl3values('4','4');ERROR:currenttransactionisaborted,commandsignoreduntilendoftransactionblocktestdb=#testdb=#commit;ROLLBACKtestdb=#testdb=#select*fromtbl3;var|fixed-----+-------(0rows)
到此,相信大家对“Oracle和PostgreSQL在事务处理上面有哪些区别”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。