重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
几千行对 oracle 来说不是问题,可以一次提交
创新互联建站是一家专业提供桓仁企业网站建设,专注与网站设计制作、做网站、HTML5建站、小程序制作等业务。10年已为桓仁众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。
如果一定要这么做,有两种方式:
一,用游标打开,一行拼一个insert 语句,并计数;满100后提交
二,分页查询,每页100行 ,然后提交
我觉得:能一次提交的尽量不要分开提交,如果提交到一部分时候,出现问题了,提交的不能回滚了。增加了业务逻辑的复杂性。
oracle的提交用commit,一般commit用语update语句及insert语句中。
如,有以下两个语句:
update test set id=3 where id=2;
commit;
insert into test values (4,'王五');
commit;
如果进行了update及insert操作后不进行提交的话,那么修改或插入的数据只在当前session有效,并不会写入数据库,只有当commit(提交)后,才会生效。
这个commit应该是本机的,和dblink没什么关系,而且就算你找到的dblink的那个session那么也不行,以为这个session在dblink的操作完成后已经关闭了。
个人感觉不要这么远程insert,最好是调用一个那个数据库上的过程去insert这样的话,在那个过程中commit肯定是没有问题的。
如果必须要这么写,那么可以加入一条insert和一条delete
就是上面是正常insert的语句。
下面有一条delete(这条删除一个绝对不可能出现的一条试试)
按照你的说法,第二个事务提交时,第一个事务才能commit。可是这样会出现问题,因为如果你大量提交,那么数据库会因此夯住的,所以你看看第一个办法行不行,我觉得第一个办法还靠谱点。
大数据量提交可能会造成系统瘫痪,所以不建议这样做。
如果有需要,可以在导出insert语句的时候分批次commit(提交)。
方法如下:
1、登录plsql,进入导出表
2、选择要导出的表,然后下图位置根据需要写上每次多少行提交,选择导出路径,点击导出即可