为什么oracle不会忽略直接路径插入的参照完整性约束

时间:2013-06-15 12:54:56

标签: sql oracle oracle11g

根据, 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;

2 个答案:

答案 0 :(得分:1)

对不起伙计们。在问这个问题之前我应该​​搜索一下这个论坛, 从线程中找到了asktom链接http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1211797200346279484 Direct-Path INSERT Oracle 这回答了我的问题。

答案 1 :(得分:1)

正如您所展示的那样,在直接路径插入期间,参考约束被忽略。我会试着找出为什么9i文件这么说....