3

SQL Server 2000 トリガーをコーディングしようとしています。

挿入ステートメントごとに、挿入された値をログ テーブルに記録してから、何らかの処理を行いたいと考えています。処理が失敗したときにログがロールバックされないようにするにはどうすればよいですか?

ロギングを内部に配置するには、内部自律トランザクションが必要なようです。SQL Server 2000 上の T-SQL で実行できますか?

実装によってオーバーヘッドが大きくなりすぎないことを願っています。または、処理が失敗した場合、元の挿入をロールバックしないように適切に管理するにはどうすればよいですか。ありがとう

4

1 に答える 1

2

トリガーでいかなる処理も行わないことを強くお勧めします。

トリガーが起動されるタイミングと頻度を制御することはできません。したがって、トリガーが非常に無駄のないものであることを確認してください。せいぜい 1 行 (または数行) を「監査」テーブルまたは「処理するジョブ」テーブルに "後で処理するためのマーカー」。ただし、トリガーで実際に処理を開始/実行しないでください。

実際の処理は、SQL エージェント ジョブなどを使用して個別に処理します。これは元のステートメントとは独立して実行されるため、「ネストされた」トランザクションなどの問題もありません。

于 2012-06-08T16:02:21.553 に答える