シナリオ:
データがテーブルに挿入/更新/削除されるたびに、最大 3 つのことが発生する必要があります。
- データは別のテーブルに記録する必要があります
- 参照整合性は、暗黙的な関連データに適用する必要があります (外部キー関係にリンクする必要があるデータを参照していますが、そうではありません: たとえば、更新
Table1.Name
もTable2.Name
同じ値に更新する必要がある場合) - 任意のビジネス ロジックを実行する必要がある
データベースのアーキテクチャとスキーマを変更してはならず、要件はトリガーを使用して達成する必要があります。
質問
どちらのオプションが優れていますか?:
- 操作 (挿入/更新/削除) ごとに 1 つのトリガーで、複数の問題 (ログ、暗黙的な参照整合性の適用、および任意のビジネス ロジックの実行) を処理します。このトリガーには名前を付けることができます
D_TableName
(削除の「D」)。 懸念によって分離された操作ごとの複数のトリガー。それらは次のように命名できます。
D_TableName_Logging
-何かが削除されたときのログ用D_TableName_RI
D_TableName_BL
私はオプション 2 を好みます。コードの 1 つのユニットには 1 つの関心事があるからです。私は DBA ではありませんが、危険にさらされるほど SQL Server について十分に知っています。
1 つのトリガーですべての懸念事項を処理する説得力のある理由はありますか?