2

根据, http://docs.oracle.com/cd/B10500_01/server.920/a96524/c21dlins.htm#10778

在直接路径 INSERT 操作期间,Oracle 将插入的数据附加到表中现有数据之后。数据直接写入数据文件,绕过缓冲区缓存。现有数据中的可用空间不被重用,参照完整性约束被忽略。这些程序结合起来可以提高性能。

所以下面的 SQL 应该导致数据被插入到表 'c' 中。但是 Oracle 仍然检查引用约束,为什么?

create table a(b varchar2(30));
alter table a add constraint "pk_a" primary key (b);
create table c(b varchar2(30), constraint "fk_b" foreign key(b) references a(b));

insert /*+ APPEND */ into c select 'a'||rownum from dual connect by level<=10000;
4

2 回答 2

1

对不起大家。在问这个问题之前我应该​​搜索这个论坛,线程 Direct- Path INSERT Oracle 回答了我的问题。

于 2013-06-15T13:01:40.067 回答
1

正如您很好地展示的那样,在直接路径插入期间不会忽略引用约束。我会尝试找出为什么 9i 文档会这样说......

于 2013-06-15T13:02:26.603 回答