0

私が依頼された厄介なハックの一部として、テーブル内の関連レコードを更新するようにトリガーを変更する必要がありますが、テーブルの変更エラーが発生しています。

データは次のようになります。

roster table
Id   person_id  route_id  active_ind
1    1          1         Y
2    2          1         Y
3    3          2         Y
4    4          2         Y  

person_id = 1 の active_ind が N に設定されている場合、同じルート (route_id = 1) に関連付けられている他の人物の active_id も N に設定する必要があります。

正常に機能する他のルート関連テーブルを更新する現在のトリガー (更新後) があります。次のコードを追加すると、変更テーブル エラーが発生します。

 update roster r
    set r.active_ind = 'N'
    where r.route_id = :new.route_id
      and r.id != :new.id
      and r.active_ind = 'Y';

これは、更新中にテーブルを更新しようとしていることが原因です。誰でも解決策を提案できますか?

4

1 に答える 1

0

ミューテーション テーブル エラーは、同じテーブルの DML ステートメントが原因でトリガーが起動されたときに、テーブルの行を操作しようとしたときに発生したエラーです。ミューテーションテーブル エラーを回避するには、COMPUND TRIGGERSを使用することをお勧めします。

于 2014-09-16T07:49:03.470 に答える