質問: (select ・・・)) begin ・・・・ end; / と書いたところ ora-02251: ここでは副問合せは使用できません。 と怒られました。 また:newや:oldの使えるはどの値を持ってくるのでしょうか? 自分はinsert時には:newはvaluesの値、:oldはnull。 update時は:newはsetした値、:oldはwhere句で指定したレコードの値だと思っています。 間違いや補足ありましたら教えていただけると幸いです。 宜しくお願いします。
回答: >また:newや:oldの使えるはどの値を持ってくるのでしょうか? beforeトリガーでもafterトリガーでも、:oldは当該sql文発行直前の内容。 :newは、当該sql文で指定された更新したい値を含む更新後イメージ。 例えば、aというテーブルが a1 a2 a3 -- -- -- 11 12 13 21 22 23 だったとき update a set a2=19 where a1=11; で動く更新トリガー内では :old.a1=11 :old.a2=12 :old.a3=13 :new.a1=11 :new.a2=19 :new.a3=13 の状態となります。