delete from flow_status_mgr t where t.ownuserid
= :new.id or t.cususerid = :new.id;
END;
把when放在begin上面就可以了,对了,要是用if怎么用啊,怎么定义啊
------解决方案--------------------------------------------------------
因为你没定义 old as old row啊。。。
------解决方案--------------------------------------------------------
引用
貌似我把if改成when 然后放到begin上面就可以用了
执行语句放在begin前面?? 怎么可能啊。。。
话说我没理解你的数据库设计
如果一个user向一个客户提交了多个纪录
又如果一个user向多个客户都提交了纪录
怎么会因为删除了其中一条记录就删除user对应的department id?
那剩下的纪录对应什么???
而且你删除了整个depart, 那同部门的其他人员对应谁??
你成功的原因也许是只用1 2条记录做的测试
不论从编程规范还是逻辑设计,我都觉得有点问题哦
------解决方案--------------------------------------------------------
引用
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上面就可以了,对了,要是用if怎么用啊,怎么定义啊
我会写成
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;
你的代码写的我太无语了
------解决方案--------------------------------------------------------
中间 and我写了2次 笔误请忽略
------解决方案--------------------------------------------------------
可参考:
Oracle查询语句中的select * from tb1, tb2 where
tb1.id=tb2(id+)这里的(id+)起什么作用啊解决方案 另这里的部分程序错误异常BUG解决方案
%D%A
|
%D%A
oracle存储过程|http://www.myexception.cn/oracle-develop/177537.html