oracle – 有没有办法在指定提交计数时执行INSERT INTO SELECT语句?

oracle – 有没有办法在指定提交计数时执行INSERT INTO SELECT语句?,第1张

概述DB:Oracle 11g 有没有办法做以下事情: INSERT INTO T1 (V1, V2)COMMIT EVERY XASSELECT (V1, V2) FROM T2; 我知道如何循环游标,但我正在寻找更精简的东西. PL / SQL很好,但没有循环. 使用SQL提示也很好. 如果这只是oracle无法处理的事情,那么悲伤就会随之而来(大多数情况下,我只是好奇,因为我已经有 DB:Oracle 11g

有没有办法做以下事情:

INSERT INTO T1    (V1,V2)COMMIT EVERY XASSELECT (V1,V2) FROM T2;

我知道如何循环游标,但我正在寻找更精简的东西.

PL / sql很好,但没有循环.
使用sql提示也很好.

如果这只是oracle无法处理的事情,那么悲伤就会随之而来(大多数情况下,我只是好奇,因为我已经有了另一种方法).

注意:该应用程序有数千亿条记录.每天创造数百万. INSERT INTO SELECT不适用于如此大的数据集.特别是当有大量的并行运行时.

解决方法 Oracle不允许声明进行临时提交,不允许.这样做会违反ACID数据库的基本属性.如果语句在第N行失败会怎么样? Oracle无法回滚先前提交的行.它不知道哪些行已处理,哪些行未处理.因此,您的声明将部分成功,您的数据库将处于未知状态.使用关系数据库的一个主要好处是避免产生这种结果.

你为什么要先做临时提交?这将使您的代码变慢并导致您使用更多资源.它会强制你编写一堆代码来使你的进程可以重新启动(即你必须跟踪哪些行已被处理,哪些没有,以便你可以回滚部分完成的更改,或者如果失败则重新启动进程在中间).它会让您的代码更难以测试.进行临时提交几乎没有充分的理由.

总结

以上是内存溢出为你收集整理的oracle – 有没有办法在指定提交计数时执行INSERT INTO SELECT语句?全部内容,希望文章能够帮你解决oracle – 有没有办法在指定提交计数时执行INSERT INTO SELECT语句?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/sjk/1158782.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-01
下一篇2022-06-01

发表评论

登录后才能评论

评论列表(0条)

    保存