on update
トリガーを作成しました。
1 つのステートメントでテーブル内の 5 つのレコードを更新する場合、トリガーは何回実行されますか? 単一のトランザクションでレコードを更新する複数のステートメントがある場合、変更はありますか?
5 回実行しますか、それともすべてのトランザクションが完了した後に 1 回だけ実行しますか?
on update
トリガーを作成しました。
1 つのステートメントでテーブル内の 5 つのレコードを更新する場合、トリガーは何回実行されますか? 単一のトランザクションでレコードを更新する複数のステートメントがある場合、変更はありますか?
5 回実行しますか、それともすべてのトランザクションが完了した後に 1 回だけ実行しますか?
それはすべて、使用しているトリガーのタイプによって異なります。
INSERT
基づくステートメントSELECT
または複数行構文を使用しているステートメントにも当てはまります)。Oracle、PostgreSQL、および DB2 は、行レベルとステートメント レベルの両方のトリガーをサポートしています。Microsoft SQL Server はステートメント レベルのトリガーのみをサポートし、MySQL は行レベルのトリガーのみをサポートします。
SQL 2008 の場合: 5 行を更新する 1 回の更新を行う場合、トリガーは 1 回だけ実行する必要があります。
そのため、変更されたすべての行を検出できるようにするには、テーブル「INSERTED」および「DELETED」を使用する必要があります。
1 行を更新する更新を 5 回実行している場合、トリガーは 5 回実行されます。
SQL Server を使用していることを考えると、トリガーは Update ごとに 1 回だけ起動します。
これが望ましくない場合は、別の更新ステートメントを使用して、トリガーが毎回確実に起動されるようにすることを検討できます。
SQLトリガーに関するこのチュートリアルを見ることができます。それはすべてをカバーしています。
Oracle を使用している場合、トリガーは行に基づくことができることに注意してください。SQL Server にはありません。