を挿入する前に、oracle 11Gトリガーがあります。その中のアクションは必要ありません。一方、トリガーを呼び出した行がテーブルに正しく挿入されていることは非常に重要ですトリガーが失敗した場合に行が挿入されることを確認する
トリガーが失敗しても行がテーブルに確実に挿入されるようにする方法があるかどうかを知りたいのですが?
それはあなたの助けを事前に
おかげ
を挿入する前に、oracle 11Gトリガーがあります。その中のアクションは必要ありません。一方、トリガーを呼び出した行がテーブルに正しく挿入されていることは非常に重要ですトリガーが失敗した場合に行が挿入されることを確認する
トリガーが失敗しても行がテーブルに確実に挿入されるようにする方法があるかどうかを知りたいのですが?
それはあなたの助けを事前に
おかげ
3つの一般的なアプローチ最初に解雇する必要が挿入する前に、別のトリガーにカスケードにリンクされているので、私は、挿入後にトリガを設定することはできません。
1)トリガーが実行するアクションが成功するかどうか気にしない場合、まずトリガーは必要ありません。トリガーが決して実行されない場合は、トリガーが成功するかどうかを気にして、正しくコーディングされているかどうか注意を払う必要があります。
2)トリガーは、トリガー操作とは別に成功または失敗できる非同期操作を発生させます。これは、トリガー・トランザクションがコミットした後に実行されるdbms_job
を使用してトリガーがジョブをサブミットすることを意味する可能性があります。これは、別のプロセスが読み取って何かを行う別のテーブル/ AQに行を書き込むことを意味します。非同期プロセスが失敗すると、トリガープロセスがまだ実行されている間に別々にデバッグできます。
3)例外ハンドラをトリガに追加すると、例外をログに記録し、エラーが発生してもエラーが発生していないことを警告します。残念なことに、あまりにも多くの場合、このアプローチは誰も読まないテーブルに行を書き込むことになり、誰も操作が失敗したことを誰も知りません。誰も操作が失敗したことを知っていない場合、誰もそれを修正する必要があることを誰も知らず、基本的にはオプション1の状態に戻り、コードを単に削除するだけです。
こんにちはジャスティン あなたの回答は、私がこれでもトリガーが重要ではないテーブル にログと第三の選択肢を選んだ を予想以上であった(より正確には、トリガーと呼ばれる行の挿入が必要とされます)、このデータベースを使用する3番目のアプリケーションは、トリガーが成功した場合に、メールを送信して、監視画面に関する情報を表示する必要があります。そうでない場合は、エンドユーザーが知り、彼らは私に連絡します ありがとう – bonzaikarukera
「トリガーでエラーが発生した場合」という意味ですか? –
トリガーで例外をキャッチし、再度トリガーしないでください。 – Mottor