oracle 触发器 select :new,帮忙看下这个oracle触发器,在select后面的where语句有有关问题,但不知道什么有关问题...
delete from flow_status_mgr t where t.ownuserid
= :new.id or t.cususerid = :new.id;
END;
把when放在begin上面就可以了,對(duì)了,要是用if怎么用啊,怎么定義啊
------解決方案--------------------------------------------------------
因?yàn)槟銢]定義 old as old row啊。。。
------解決方案--------------------------------------------------------
引用
貌似我把if改成when 然后放到begin上面就可以用了
執(zhí)行語(yǔ)句放在begin前面?? 怎么可能啊。。。
話說(shuō)我沒理解你的數(shù)據(jù)庫(kù)設(shè)計(jì)
如果一個(gè)user向一個(gè)客戶提交了多個(gè)紀(jì)錄
又如果一個(gè)user向多個(gè)客戶都提交了紀(jì)錄
怎么會(huì)因?yàn)閯h除了其中一條記錄就刪除user對(duì)應(yīng)的department id?
那剩下的紀(jì)錄對(duì)應(yīng)什么???
而且你刪除了整個(gè)depart, 那同部門的其他人員對(duì)應(yīng)誰(shuí)??
你成功的原因也許是只用1 2條記錄做的測(cè)試
不論從編程規(guī)范還是邏輯設(shè)計(jì),我都覺得有點(diǎn)問(wèn)題哦
------解決方案--------------------------------------------------------
引用
create or replace
TRIGGER MODIFYSYSUSER
AFTER UPDATE OF ISACTIVE ON SYS_USER
FOR EACH ROW
WHEN (old.isactive=1and new.isactive=0)
BEGIN
delete from flow_status_mgr t where t.ownuserid
= :new.id or t.cususerid = :new.id;
END;
把when放在begin上面就可以了,對(duì)了,要是用if怎么用啊,怎么定義啊
我會(huì)寫成
TRIGGER MODIFYSYSUSER AFTER UPDATE OF ISACTIVE ON SYS_USER FOR EACH ROW BEGIN IF(old.isactive = land AND new.isactive=0) DELETE FROM ... ...END IF;END;
你的代碼寫的我太無(wú)語(yǔ)了
------解決方案--------------------------------------------------------
中間 and我寫了2次 筆誤請(qǐng)忽略
------解決方案--------------------------------------------------------
可參考:
Oracle查詢語(yǔ)句中的select * from tb1, tb2 where
tb1.id=tb2(id+)這里的(id+)起什么作用啊解決方案?另這里的部分程序錯(cuò)誤異常BUG解決方案
%D%A
|
%D%A
oracle存儲(chǔ)過(guò)程|http://www.myexception.cn/oracle-develop/177537.html
總結(jié)
以上是生活随笔為你收集整理的oracle 触发器 select :new,帮忙看下这个oracle触发器,在select后面的where语句有有关问题,但不知道什么有关问题...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【IntelliJ IDEA】添加一个新
- 下一篇: jetty部署多个web应用及将jett