3

ウィキペディアが言うように

データベース トリガーは、一般的に次の目的で使用されます。

  • 変更の監査 (例: 変更に関係するユーザーとロールのログを保持する)
  • 変更を強化する (たとえば、レコードへのすべての変更がサーバーの時計によってタイムスタンプされるようにする)
  • ビジネス ルールを適用する (たとえば、すべての請求書に少なくとも 1 つの明細項目があることを要求する) など。

ref:データベース トリガー - ウィキペディア

しかし、共通のプログラミング言語 (特に OOP を使用) を使用して、ビジネス層内でこれらのことを簡単に行うことができます。では、現代のソフトウェア アーキテクチャにおけるデータベース トリガーの必要性は何でしょうか? なぜ本当に必要なのですか?

4

3 に答える 3

3

すべてのデータがアプリケーションによってのみ変更される場合は、機能する可能性があります。しかし、私が非常に頻繁に見た他のケースがあります。

  1. ビジネス層を使用しない他のアプリケーション (インポートを行うバッチ ジョブなど) があります。

  2. ホットフィックスの手段として単純な SQL スクリプトを簡単に使用することはできません

それとは別に、場合によっては両方の世界を組み合わせることもできます。データベースでトリガーを定義し、Java を使用してそれを実装します。PostgreSql for examples は、Java で記述されたトリガーをサポートしています。Oracle に関しては、PL/SQL トリガーから Java メソッドを呼び出すことができます。MS SQL Server で CLR ベースのトリガーを定義できます。

このように、すべてのプログラマーが PL/SQL を学ぶ必要はなく、データの整合性はデータベースによって強化されます。

于 2013-06-16T22:09:26.470 に答える
2

はい、データベース トリガーを完全に省略できます。

ただし、データベースがアプリケーション層からのみアクセスされることを保証できない場合 (これは不可能です)、それらが必要になります。はい、アプリケーション層ですべてのデータベース ロジックを実行できますが、 更新時に X を実行する必要があるテーブルがある場合、それを行う唯一の方法はトリガーです。そうしないと、アプリケーションの外部でデータベースに直接アクセスする人がアプリケーションを壊してしまいます。

他にできることは何もありません。トリガーが必要な場合は、トリガーを使用してください。データベースへのすべての接続がアプリケーションを介して行われると想定しないでください...

于 2013-06-16T21:30:00.687 に答える