私の質問は主に「パフォーマンスに最適なもの」に関係していますが、「哲学的に」話すこともできます(違いがある場合)...すぐに飛び込みましょう.
[TableA].[ColumnB] には、[TableC].[ColumnD] に存在する必要がある値が格納されます。すぐに、外部キーに関する回答はありません。何らかの理由で、この環境では「許可されていない」と想定してください。
しかし、「状況 x、y、z」により、[TableA].[ColumnB] は [TableC].[ColumnD] に存在しない値を取得することがあります。コードを「シリアル化された blob」として実行すると、データのメモリ内表現であり、[ColumnB] の値は、他のプロセスによって [TableC].[ColumnD] から削除される前に入力されます。とにかく、これは例のためなので、「なぜこの状態が起こるのか」にとらわれずに、それが起こることを受け入れてください.
問題を「修正」するには、どの方法がこれら 2 つの方法の中で最も優れているか: 1. [TableA] で on-INSERT を起動するトリガーを作成し、[ColumnB] を本来あるべき値に更新します"悪い値から良い値へ)。または、2. スケジュールされたジョブを毎時/分/更新クエリを実行するものは何でも実行して、考えられるすべての「悪い」値を対応する「良い」値に変更します。
より一般的に言えば、どちらがパフォーマンスに優れているか、および/またはベストプラクティスは何ですか: トリガー、または定期的なスケジュールされたジョブ? コンテキストでは、[TableA] が通常数十万行のオーダーであり、一度に 10 ~ 100 レコードが挿入され、数分ごとの頻度から 1 日に数回の頻度であるとします。