これを考慮してください。実際にレコードを削除せずに、レコードを削除済みとしてマークするフィールドを追加すると、最後に変更されたユーザーを取得できます。実際にレコードを削除したい場合は、一度に1つずつではなく、バッチで削除する夜間のジョブを実行できます。これは、削除されて実行されていないレコードが多すぎる場合にフラグを立てるように設定することもできます。
これを実行して何も中断しないようにする最も簡単な方法は、テーブルの名前を変更し、列IsDeletedをビットフィールドとして追加してから、テーブルが最初に呼び出されたのと同じ名前のビューを作成することです。ビューは、isdeltedがnullであるすべてのレコードを選択します。
このためのトリガーの使用について、だれにも話させないでください。不正な変更を行っている人が監査から逃れることができないようにする必要があります。トリガーを使用すると(そして、実動のdba以外のユーザーがテーブルを変更する権限がない場合)、dba以外のユーザーは監査なしで削除できません。テーブルへの直接アクセスを制限するためのストアドプロシージャがない一般的なシステムでは、通常、あまりにも多くの人がテーブルに直接影響を与えて、不正のためにテーブルを大きく開く可能性があります。詐欺を犯した人々は通常、データを変更するために使用することになっているアプリケーションを使用しません。データベースレベルでデータを保護する必要があります。
トリガーを作成するときは、トリガーが複数行の挿入/更新/削除を処理できることを確認してください。トリガーは、一度に1行ではなく、データセット全体を操作します。