符合中小企业对网站设计、功能常规化式的企业展示型网站建设
本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...
商城网站建设因基本功能的需求不同费用上面也有很大的差别...
手机微信网站开发、微信官网、微信商城网站...
execute执行后 可以回滚
成都创新互联长期为超过千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为淅川企业提供专业的成都网站设计、网站制作,淅川网站改版等技术服务。拥有十年丰富建站经验和众多成功案例,为您定制开发。
commit提交后 不可以回滚
其实Oracle提交数据是分两步操作的,第一步execute执行,第二步commit提交。对应的PL\SQL也是要先点execute执行,执行后再点commit提交。
但是 commit提交后 可以用闪回查询恢复原来的数据 因为oracle会将近期的数据保存到快照中 如:
SELECT * FROM TABLE_1 AS OF TIMESTAMP TO_TIMESTAMP('20080606 20:00:00','YYYYMMDD HH24:MI:SS');
这里'20080606 20:00:00'就是你想恢复数据到哪个时间状态 TABLE_1是数据库的表名 这样查询到的数据就是执行更新操作之前的数据
这个commit应该是本机的,和dblink没什么关系,而且就算你找到的dblink的那个session那么也不行,以为这个session在dblink的操作完成后已经关闭了。
个人感觉不要这么远程insert,最好是调用一个那个数据库上的过程去insert这样的话,在那个过程中commit肯定是没有问题的。
如果必须要这么写,那么可以加入一条insert和一条delete
就是上面是正常insert的语句。
下面有一条delete(这条删除一个绝对不可能出现的一条试试)
按照你的说法,第二个事务提交时,第一个事务才能commit。可是这样会出现问题,因为如果你大量提交,那么数据库会因此夯住的,所以你看看第一个办法行不行,我觉得第一个办法还靠谱点。
你好!
一次折腾几千万的话,
那么设置一下,
有
20W了,
就自动提交一下。
set
autocommit
on;
set
autocommit
200000;
然后,假如你的目标数据库,
是归档的话,
可以
INSERT
/*+
append
*/
INTO
目标表
nologging
SELECT
*
FROM
源表@DBLINK;
commit;
set
autocommit
off;
假如你的
目标表
上面,
有
索引的话,
建议先删除
索引。
等
上面的
INSERT
语句执行完毕后,
再重建索引。
仅代表个人观点,不喜勿喷,谢谢。
几千行对 oracle 来说不是问题,可以一次提交
如果一定要这么做,有两种方式:
一,用游标打开,一行拼一个insert 语句,并计数;满100后提交
二,分页查询,每页100行 ,然后提交
我觉得:能一次提交的尽量不要分开提交,如果提交到一部分时候,出现问题了,提交的不能回滚了。增加了业务逻辑的复杂性。