instead of 触发器
我有一个触发器代码如下:
CREATE OR REPLACE TRIGGER KAKAKU_KOUSHOU_MEISAI_TRI
instead of UPDATE ON GA1_KAKAKU_KOUSHOU_MEISAI
FOR EACH ROW
BEGIN
if (:old.GA1_COM_CD != :new.GA1_COM_CD
and :old.GA1_COM_NM != :new.GA1_COM_NM
and :old.GA1_COM_ABBRE_NM != :new.GA1_COM_ABBRE_NM
and :old.GA1_COM_KANA_NM != :new.GA1_COM_KANA_NM ) then
update GA1_KAKAKU_KOUSHOU_MEISAI set GA1_COM_CD = :new.GA1_COM_CD,
GA1_COM_NM = :new.GA1_COM_NM,GA1_COM_ABBRE_NM = :new.GA1_COM_ABBRE_NM,
GA1_COM_KANA_NM = :new.GA1_COM_KANA_NM
WHERE CH_NO = :NEW.CH_NO AND CH_CNT = :NEW.CH_CNT;
end if;
END;
在创建触发器的时候报错,说不能在表GA1_KAKAKU_KOUSHOU_MEISAI上创建,请问这到底是怎么回事啊?
问题点数:0、回复次数:5Top
1 楼gaosong_6396(爱拼就会赢)回复于 2005-04-04 16:21:14 得分 0
急啊
Top
2 楼jxc(GameHeart)回复于 2005-04-04 17:52:58 得分 0
GA1_KAKAKU_KOUSHOU_MEISAI 是表还是视图?
instead 只能在视图上创建Top
3 楼sohu98(天天)回复于 2005-04-05 17:11:58 得分 0
触发器写的有问题,可能会引起死锁。
/“
如果这条语句成功运行,由于更新的是GA1_KAKAKU_KOUSHOU_MEISAI,那么又会触发该触发器,这样这个触发器就会永远的触发下去,死循环。
”/
update GA1_KAKAKU_KOUSHOU_MEISAI set GA1_COM_CD = :new.GA1_COM_CD,
GA1_COM_NM = :new.GA1_COM_NM,GA1_COM_ABBRE_NM = :new.GA1_COM_ABBRE_NM,
GA1_COM_KANA_NM = :new.GA1_COM_KANA_NM
WHERE CH_NO = :NEW.CH_NO AND CH_CNT = :NEW.CH_CNT;Top
4 楼starbzj(bbb)回复于 2005-04-06 16:22:58 得分 0
這個東東只可以在視圖上建的,你建在表上,當然報錯了。Top
5 楼fanjim0211(fjm)回复于 2005-04-08 17:20:04 得分 0
樓上說得很對,instead 觸發器只能建在視圖上,而不能建在實表上!!!Top




