2016-08-19 8 views
1

トリッキーなシナリオのビット。 Child_Tableの挿入前トリガーを別のトリガーを呼び出すOracleトリガー

  • PARENT_TABLEの更新トリガーの前にPARENT_TABLE

の ""

  • 問題updateコマンドにChild_Table.Field1の値を設定します。

    • セット:new.Field1 = Child_Table.Field1

    短い質問 - Parent_Table.Field1 = "A"ですか?

    長い質問 - Child_Tableトリガーは既に完了し、Child_Table.Field1に "A"の値をコミットして、Parent_Tableに使用できるようにしますか?

  • 答えて

    2

    短い回答 - はい。

    長い回答 - トリガーによって発行されたupdateは、他のアップデートとまったく同じで、次のon updateトリガーをトリガーします。 を明示的ににしない限り、トリガー内の文はコミットしません。しかし、それはの中で次のトリガーと同じトランザクションで実行されるため、変更は次のトリガーで使用できるようになります。

    +0

    ありがとう、ありがとうございました! – Soyf

    +0

    しかし、 "Child_Table.Field1"の値はParent_TableのTriggerの中にあるのですか?私はちょうどテストをしましたが、何かが見つからないかもしれませんが、親のトリガーが子の新しい行にアクセスしようとすると、データが見つかりませんでした(まだ存在しません。 。) – Ditto

    +1

    ああ待って...それは赤いニシンだ。親に対してBEFORE UPDATEは必要ありません。 O.o BEFORE INSERT子供のトリガーはすべてをやっています... :)私の悪いことに、文字通りOP要求を読んで、両方のトリガーを作成しました。失敗する。 BEFORE UPDATEトリガーがなければ、完全に動作します。 :) – Ditto

    関連する問題