両方の質問に答えるには、別のアプローチがあります。データベースに不必要なオーバーヘッドが追加されるため、私は通常、最後の選択肢になるまでトリガーの使用を避けます。
トリガーとストアド プロシージャの比較
- データベース内のテーブルの関係、制約、インデックス、ストアド プロシージャを表示するのは簡単ですが、トリガーは表示するのが困難です。
- トリガーは、クライアント アプリケーション アプリケーションからは見えずに実行されます。これらは表示されないか、デバッグ コードで追跡できます。
- トリガーのことは忘れがちです。ドキュメントがないと、新しい開発者がトリガーの存在を理解するのが難しくなります。
- データベース フィールドが更新されるたびにトリガーが実行され、システムのオーバーヘッドが発生します。システムの実行が遅くなります。
これが、私がストアド プロシージャを好む理由です。エージェント経由でジョブ ファイルを作成できます (例:30 分ごと、またはその他の時間ごとに実行)。そのジョブ ファイルに挿入するためのロジックを使用できます。このようにして tree table
のデータを ほぼリアルタイムです。
エージェントを作成するための参照:
http://msdn.microsoft.com/en-us/library/ms191128(v=sql.90).aspx
http://msdn. microsoft.com/en-us/library/ms181153(v=sql.105).aspx