- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
在自动生成的脚本中,我有数千条如下所示的插入语句...
INSERT INTO HR_EMP_VISA_INFO (V_PERSON_ID, V_VISA_STATUS, V_DEPENDANT, V_COUNTRY_OF_ISSUE, V_VISA_TYPE, V_ISSUE_DATE, V_EXPIRY_DATE, V_I94_EXPIRY_DATE, V_I94_EXTENDED, V_I94_EXTENDED_DATE, V_PLACE_OF_ISSUE, V_ENTRY_TYPE, V_DEPENDANT_NAME, V_RELATIONSHIP, V_APPROXIMATE_VISA_COST, V_ACTUAL_VISA_COST, V_CURRENCY, V_VISA_UTILIZED, V_REMARKS, V_VISA_NUMBER)
VALUES (4190.0, 'Active', 'N', 'USA', 'H1B', '2013/06/25 00:00:00', '2015/09/30 00:00:00', NULL, NULL, NULL, 'Sydney', 'Multiple', NULL, NULL, '25700.00', NULL, 'LKR', 'N', NULL, 'V1000001');
如果我把 begin .... commit;结尾;这需要工作,即没有任何内容插入到表中。
例如:
begin
// all insert statements
//
commit;
end;
如何在上面的脚本中包含事务处理?我主要关心的是在上述任何插入语句失败时回滚事务,并且尽可能减少整个脚本所花费的时间。现在需要 10 多分钟才能完成。
最佳答案
要处理回滚并使事务原子化,您几乎已经完成了,请看下面。为了加快插入速度,您可以插入“APPEND_VALUES”提示,但正如文档所说:
In direct-path INSERT, data is appended to the end of the table, rather than using existing space currently allocated to the table. As a result, direct-path INSERT can be considerably faster than conventional INSERT.
片段:
set serveroutput on;
begin
// all insert statements with APPEND_VALUES hint
//eg.
INSERT /*+ APPEND_VALUES */ INTO HR_EMP_VISA_INFO (V_PERSON_ID, V_VISA_STATUS, V_DEPENDANT, V_COUNTRY_OF_ISSUE, V_VISA_TYPE, V_ISSUE_DATE, V_EXPIRY_DATE, V_I94_EXPIRY_DATE, V_I94_EXTENDED, V_I94_EXTENDED_DATE, V_PLACE_OF_ISSUE, V_ENTRY_TYPE, V_DEPENDANT_NAME, V_RELATIONSHIP, V_APPROXIMATE_VISA_COST, V_ACTUAL_VISA_COST, V_CURRENCY, V_VISA_UTILIZED, V_REMARKS, V_VISA_NUMBER)
VALUES (4190.0, 'Active', 'N', 'USA', 'H1B', '2013/06/25 00:00:00', '2015/09/30 00:00:00', NULL, NULL, NULL, 'Sydney', 'Multiple', NULL, NULL, '25700.00', NULL, 'LKR', 'N', NULL, 'V1000001');
//
commit;
exception when others then
rollback;
dbms_output.put_line('Insert failed due to: '|| SQLERRM);
end;
关于database - 事务处理后脚本不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27481363/
今天有小伙伴给我留言问到,try{...}catch(){...}是什么意思?它用来干什么? 简单的说 他们是用来捕获异常的 下面我们通过一个例子来详细讲解下
我正在努力提高网站的可访问性,但我不知道如何在页脚中标记社交媒体链接列表。这些链接指向我在 facecook、twitter 等上的帐户。我不想用 role="navigation" 标记这些链接,因
说现在是 6 点,我有一个 Timer 并在 10 点安排了一个 TimerTask。之后,System DateTime 被其他服务(例如 ntp)调整为 9 点钟。我仍然希望我的 TimerTas
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我就废话不多说了,大家还是直接看代码吧~ ? 1
Maven系列1 1.什么是Maven? Maven是一个项目管理工具,它包含了一个对象模型。一组标准集合,一个依赖管理系统。和用来运行定义在生命周期阶段中插件目标和逻辑。 核心功能 Mav
我是一名优秀的程序员,十分优秀!