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

うまく示したように、直接パスの挿入中に参照制約は無視されません。なぜ9iのドキュメントがそう言っているのかを調べてみます....

于 2013-06-15T13:02:26.603 に答える
1

申し訳ありません。この質問をする前に、このフォーラムを検索する必要がありました。 スレッドDirect- 私の質問に答えるPath INSERT Oracle 。

于 2013-06-15T13:01:40.067 に答える