4

私はこのような声明でそれを見つけました:

delete /*+ restrict_all_ref_cons  */ from table_1 where ...

ヒントが何をしているのかについて、誰かが情報を提供できますか?

データベースはOracleデータベース10.2.0.3.0です。

4

1 に答える 1

4

ヒントはカスケード削除を無効にするため、親から削除するときに子行は子テーブルから削除されません。

こちらの例を参照してください。

http://www.oracle-goldengate.info/archives/ogg-replication-for-delete-parent-table-with-fk-delete-cascade-option.html

create table s11 ( x int primary key );
create table s12 ( y int primary key, x references s11 on delete cascade );
insert into s11 values (1);
insert into s12 values (1, 1);
commit;
SQL> delete from s11;
1 row deleted.
SQL> select * from s12;
no rows selected <=========== when deleting parent row in s11, the child row in s12 is also deleted.

SQL> rollback;
Rollback complete.

SQL> delete /*+ RESTRICT_ALL_REF_CONS */ from s11;
1 row deleted.
SQL> select * from s12; <=========== with RESTRICT_ALL_REF_CONS hint, the child row will not be deleted.
Y X
---------- ----------
1 1
于 2012-06-12T13:48:59.360 に答える