2

次のステートメントをOracleに実行しようとしています。

alter table COMENTARIO
add constraint FK_COMENTARIO_DI foreign key (DI_ID)
  references DATO_DE_INTERES (DI_ID) ON UPDATE CASCADE ON DELETE SET NULL;

ただし、ORA-00905にキーワードがありません。

ただし、ON UPDATEステートメントを削除すると、コマンドは問題なく機能します。どうしてこれなの?ON UPDATEを使用できない場合のオプションはありますか?よろしくお願いします!

4

3 に答える 3

2

カスケード制約のための「ONUPDATE」句はありません。ある種のアプリケーションの強制やトリガー以外の選択肢はわかりません。

于 2010-12-29T21:54:50.760 に答える
1

OracleにはONUPDATECASCADEなどのオプションはありません。たぶん、これを実装する方法を探す代わりに(ON UPDATEトリガーで可能だと思います)、なぜこれが必要なのかを知ることができます。つまり、DATO_DE_INTERESの主キーを更新するのはなぜですか?

于 2010-12-29T21:55:44.550 に答える
1

Oracle では、制約定義に ON UPDATE 句はありません。ほとんどの場合、主キーは不変である必要があるため、これを「念のため」実装したくないでしょう。主キーが不変でない場合は、通常、コード化するのではなく対処する必要があるデータ モデルの問題を示しています。

そうは言っても、本当にそのようなものを実装したい場合は、Tom Kyte がupdate cascade packageを持っています。ただし、このレベルの複雑さで設計するよりも、最初から問題を回避するようにシステムを設計する方がはるかに優れています。

于 2010-12-29T22:07:13.243 に答える